说我有以下资产类:
class Asset
{
public int Id { get; set; }
public string Name { get; set; }
}
现在我想编写一个方法GetPropertyInfo(a=>a.Name);
,这个方法为我提供了Asset.Name的PropertyInfo。我应该能够像这样调用这个方法:
编辑示例方法调用
PropertyInfo propInfo = GetPropertyInfo(a=>a.Name);
我有List<PropertyInfo>
所以我想将给定的lambda表达式与列表中的表达式匹配。
if(Possible on Compact Framework 3.5 && using C#)
How?
else
Please Notify
感谢。
答案 0 :(得分:1)
这可以在.NETCF 3.5下完成。
private List<Asset> m_list;
private Asset[] GetPropertyInfo(string name) {
var items = m_list.Where(a => a.Name == name);
if (items != null) {
return items.ToArray();
} else {
return null;
}
}
但是,您需要初始化m_list
并先填写数据。
<强>更新强>
因此,您的列表类型为PropertyInfo
,并且您希望调用以获取与特定Asset
对象匹配的类型。
如果这是正确的,您只需编辑上面的代码如下:
private List<PropertyInfo> m_list;
private PropertyInfo GetPropertyInfo(Asset a) {
return m_list.FirstOrDefault(x => x.Name == a.Name);
}
我不确定你是如何获得List<PropertyInfo>
的。我可以使用下面的代码拉出一个PropertyInfo
对象:
private PropertyInfo GetPropertyInfo() {
var t = Type.GetType("System.Reflection.MemberInfo");
return t.GetProperty("Name");
}
此项目没有任何用处。