按属性值查找类属性

我想通过其属性和属性值查找类属性。


鉴于此属性和类:


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”。


天涯尽头无女友
浏览 125回答 2
2回答

呼唤远方

你也可以做这样的事情var&nbsp;c&nbsp;=&nbsp;new&nbsp;MyClass();var&nbsp;props&nbsp;=&nbsp;c.GetType() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.GetProperties() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Where(prop&nbsp;=>&nbsp;prop.GetCustomAttributes(false) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.OfType<MyAttribute>() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Any(att&nbsp;=>&nbsp;att.Name&nbsp;==&nbsp;"Something1"));

牧羊人nacy

以旧的 foreach 风格var c = new MyClass();var props = c.GetType().GetProperties()&nbsp; &nbsp; .Where(prop => Attribute.IsDefined(prop, typeof(MyAttribute)));foreach (var prop in props){&nbsp; &nbsp; MyAttribute myAttr = (MyAttribute)Attribute.GetCustomAttribute(prop, typeof(MyAttribute));&nbsp; &nbsp; if (myAttr.Name == "Something2")&nbsp; &nbsp; &nbsp; &nbsp; break; //you got it}
打开App,查看更多内容
随时随地看视频慕课网APP