【发布时间】:2014-04-04 12:57:10
【问题描述】:
我有一个从 azure 移动服务检索表的简单方法。
public static async List<T>GetDataFromListTable<T>()
{
var data = await MobileService.GetTable<T>().ToListAsync();
return data.Count != 0 ? data : null;
}
这很好用。
我想要做的是另一种方法,它采用从服务返回的参数名称并返回该参数的值。到目前为止我有这个
public static async Task<T> GetDataFromTable<T>(string paramName)
{
var k = Activator.CreateInstance(typeof(T));
var members = typeof(T).GetProperties().Select(t=>t.Name).ToList();
if (!members.Contains(paramName))
return (T)k;
var mn = typeof(T).GetProperties()[members.IndexOf(paramName)];
var data = GetDataFromListTable<T>();
var retval = data.Select(t => t.mn);
}
问题显然是我不能进行 Linq 查询,因为 T 不包含 mn。我也不能用
var retval = data.Select(t=>t.paramName);
因为 paramname 只是类中成员的字符串表示形式。
简而言之……
方法1有参数名,从方法2中获取一个列表。从方法2返回的列表中,找到参数名并返回相关值。
有没有办法做我想做的事?
【问题讨论】: