Inherited属性的bool属性指的是什么?
Inherited
这是否意味着如果我用一个属性AbcAtribute(具有Inherited = true)定义我的类,并且如果我从该类继承另一个类,则派生类也将具有相同的属性应用于它?
AbcAtribute
Inherited = true
为了用一个代码示例来阐明这个问题,请设想以下内容:
[AttributeUsage(AttributeTargets.Class, Inherited = true)] public class Random: Attribute { /* attribute logic here */ } [Random] class Mother { } class Child : Mother { }
是否Child也将Random属性应用到它?
Child
Random
如果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值。