1

假设我有以下资产类别:

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

谢谢。

4

1 回答 1

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");
}

这个项目没有任何用处。

于 2013-06-10T14:15:04.110 回答