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

继承如何作用于属性?

继承如何作用于属性?

慕田峪9158850 2019-11-30 13:06:00
Inherited属性的bool属性指的是什么?这是否意味着如果我使用具有属性的属性AbcAtribute(具有Inherited = true)来定义我的类,并且如果我从该类继承另一个类,则派生类也将具有相同的属性应用于该类?为了用一个代码示例来阐明这个问题,请设想以下内容:[AttributeUsage(AttributeTargets.Class, Inherited = true)]public class Random: Attribute{ /* attribute logic here */ }[Random]class Mother { }class Child : Mother { }是否Child也将Random属性应用到它?
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

如果Inherited = true(默认值),则意味着您正在创建的属性可以被该属性装饰的类的子类继承。


所以-如果您使用[AttributeUsage(Inherited = true)]创建MyUberAttribute


[AttributeUsage (Inherited = True)]

MyUberAttribute : Attribute

{

   string _SpecialName;

   public string SpecialName

   { 

     get { return _SpecialName; }

     set { _SpecialName = value; }

   }

}

然后通过装饰超类来使用Attribute ...


[MyUberAttribute(SpecialName = "Bob")]

class MySuperClass 

{

  public void DoInterestingStuf () { ... }

}

如果我们创建MySuperClass的子类,它将具有此属性...


class MySubClass : MySuperClass

{

   ...

}

然后实例化MySubClass的实例...


MySubClass MySubClassInstance = new MySubClass();

然后测试是否具有属性...


MySubClassInstance <---现在具有MyUberAttribute,并将“ Bob”作为SpecialName值。


查看完整回答
反对 回复 2019-11-30
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

默认情况下启用属性继承。


您可以通过以下方式更改此行为:


[AttributeUsage (Inherited = False)]


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 533 浏览

添加回答

举报

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