How does inheritance work for Attributes?(继承如何对属性起作用?)
问题描述
属性上的 Inherited bool 属性指的是什么?
What does the Inherited bool property on attributes refers to?
这是否意味着如果我使用属性 AbcAtribute(具有 Inherited = true)定义我的类,并且如果我从该类继承另一个类,那么派生类也会应用相同的属性吗?
Does it mean that if I define my class with an attribute AbcAtribute (that has Inherited = true), and if I inherit another class from that class, that the derived class will also have that same attribute applied to it?
为了用一个代码示例来澄清这个问题,想象一下:
To clarify this question with a code example, imagine the following:
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }
[Random]
class Mother
{ }
class Child : Mother
{ }
Child 是否也应用了 Random 属性?
Does Child also have the Random attribute applied to it?
推荐答案
当Inherited = true(默认)时,表示你创建的属性可以被该属性修饰的类的子类继承.
When Inherited = true (which is the default) it means that the attribute you are creating can be inherited by sub-classes of the class decorated by the attribute.
所以 - 如果您使用 [AttributeUsage (Inherited = true)] 创建 MyUberAttribute
So - if you create MyUberAttribute with [AttributeUsage (Inherited = true)]
[AttributeUsage (Inherited = True)]
MyUberAttribute : Attribute
{
string _SpecialName;
public string SpecialName
{
get { return _SpecialName; }
set { _SpecialName = value; }
}
}
然后通过装饰超类来使用属性...
Then use the Attribute by decorating a super-class...
[MyUberAttribute(SpecialName = "Bob")]
class MySuperClass
{
public void DoInterestingStuf () { ... }
}
如果我们创建 MySuperClass 的子类,它将具有此属性...
If we create an sub-class of MySuperClass it will have this attribute...
class MySubClass : MySuperClass
{
...
}
然后实例化一个 MySubClass 的实例...
Then instantiate an instance of MySubClass...
MySubClass MySubClassInstance = new MySubClass();
然后测试一下是否有属性...
Then test to see if it has the attribute...
MySubClassInstance <--- 现在拥有 MyUberAttribute,其中Bob"作为 SpecialName 值.
MySubClassInstance <--- now has the MyUberAttribute with "Bob" as the SpecialName value.
这篇关于继承如何对属性起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:继承如何对属性起作用?
基础教程推荐
- 从 C# 控制相机设备 2022-01-01
- 获取C#保存对话框的文件路径 2022-01-01
- SonarQube C# 分析失败“不是指针的有效行偏移" 2022-01-01
- 更新 Visual Studio 中的 DataSet 结构以匹配新的 SQL 数据库结构 2022-01-01
- 重新排序 WPF TabControl 中的选项卡 2022-01-01
- 如果条件可以为空 2022-01-01
- C# 9 新特性——record的相关总结 2023-04-03
- 在 VB6 或经典 ASP 中使用 .NET 2022-01-01
- Mono https webrequest 失败并显示“身份验证或解密失败" 2022-01-01
- 将数据集转换为列表 2022-01-01
