我想通过其属性和属性值查找类属性。鉴于此属性和类:class MyAttribute : Attribute{ public MyAttribute(string name) { Name = name; } public string Name { get; set; }}class MyClass{ [MyAttribute("Something1")] public string Id { get; set; } [MyAttribute("Something2")] public string Description { get; set; } }我知道我可以找到这样的特定属性:var c = new MyClass();var props = c.GetType().GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(MyAttribute)));但是如何过滤属性名称值“Something2”?所以我的最终目标是通过在 MyClass 中搜索值为“Something”的属性 MyAttribute 来输出“MyClass.Description”。
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
你也可以做这样的事情
var c = new MyClass();var props = c.GetType() .GetProperties() .Where(prop => prop.GetCustomAttributes(false) .OfType<MyAttribute>() .Any(att => att.Name == "Something1"));
牧羊人nacy
TA贡献1862条经验 获得超7个赞
以旧的 foreach 风格
var c = new MyClass();
var props = c.GetType().GetProperties()
.Where(prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
foreach (var prop in props)
{
MyAttribute myAttr = (MyAttribute)Attribute.GetCustomAttribute(prop, typeof(MyAttribute));
if (myAttr.Name == "Something2")
break; //you got it
}
- 2 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消