获取标记有自定义Attribute的成员

现在我们有这样一个需求

public class Base
{
    private List<String> _stringList;
}

[AttributeUsage(AttributeTargets.Field)]
class ComponentAttribute:Attribute
{
}

所有继承Base的类,在类中的string类型成员加上ComponentAttribute特性后,该string类型成员都会添加到Base的_stringList中。不多说上代码。

public class Base
{
    private List<string> _stringList;
    protected void InitStringList()
    {
            _stringList= new List<string>();
            Type type = this.GetType();
            FieldInfo[] fieldInfos = type.GetFields();
            foreach (var field in fieldInfos)
            {
                foreach (var customAttribute in field.CustomAttributes)
                {
                    if(customAttribute.AttributeType == typeof(ComponentAttribute))
                    {
                        //---------------打印测试-----------------//
                        Log((string)field.GetValue(this));
                        this._stringList.Add((string)field.GetValue(this));
                    }
                }
            }
    }
}

[AttributeUsage(AttributeTargets.Field)]
class ComponentAttribute:Attribute
{
}

public class Son : Base
{
   [Component]
   private string a = "test";
   public Son()
   {
       base.InitStringList();
   }
}


结果就是成功打印出了 :test

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值