获取作为lambda表达式传递的参数的属性信息| Compact Framework, c#



假设我有以下资产类别:

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

谢谢。

这可以在。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");
}

相关内容

  • 没有找到相关文章

最新更新