猿问

继承如何作用于属性?

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属性应用到它?


慕田峪9158850
浏览 540回答 3
3回答

慕莱坞森

如果Inherited = true(默认值),则意味着您正在创建的属性可以被该属性装饰的类的子类继承。所以-如果您使用[AttributeUsage(Inherited = true)]创建MyUberAttribute[AttributeUsage (Inherited = True)]MyUberAttribute : Attribute{&nbsp; &nbsp;string _SpecialName;&nbsp; &nbsp;public string SpecialName&nbsp; &nbsp;{&nbsp;&nbsp; &nbsp; &nbsp;get { return _SpecialName; }&nbsp; &nbsp; &nbsp;set { _SpecialName = value; }&nbsp; &nbsp;}}然后通过装饰超类来使用Attribute ...[MyUberAttribute(SpecialName = "Bob")]class MySuperClass&nbsp;{&nbsp; public void DoInterestingStuf () { ... }}如果我们创建MySuperClass的子类,它将具有此属性...class MySubClass : MySuperClass{&nbsp; &nbsp;...}然后实例化MySubClass的实例...MySubClass MySubClassInstance = new MySubClass();然后测试是否具有属性...MySubClassInstance <---现在具有MyUberAttribute,并将“ Bob”作为SpecialName值。

慕侠2389804

默认情况下启用属性继承。您可以通过以下方式更改此行为:[AttributeUsage (Inherited = False)]
随时随地看视频慕课网APP
我要回答