为了账号安全,请及时绑定邮箱和手机立即绑定

按属性值查找类属性

按属性值查找类属性

C#
天涯尽头无女友 2021-11-14 15:55:07
我想通过其属性和属性值查找类属性。鉴于此属性和类: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"));


查看完整回答
反对 回复 2021-11-14
?
牧羊人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

}


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信