sas*_*jaq 13 .net c# inheritance custom-attributes
我们有自定义属性
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class CustomDesignerAttribute: Attribute
Run Code Online (Sandbox Code Playgroud)
然后我们有一个用这个属性装饰的基类
[CustomDesigner(someKey, someValue)]
public class BaseClass
Run Code Online (Sandbox Code Playgroud)
然后我们有一个派生自这个的类,用相同的属性(相同的键,不同的值)装饰
[CustomDesigner(someKey, someOtherValue)]
public class ChildClass : BaseClass
Run Code Online (Sandbox Code Playgroud)
是否有可能ChildClass不创建属性的副本,而是覆盖现有密钥的值(覆盖整个父属性)?如果没有,如果ChildClass没有定义自己的默认值,那么从BaseClass获取默认值的最佳模式是什么?
不,不可能覆盖现有属性.
属性是附加到对象(程序集,类,方法,变量等)的元数据,因此它们始终保持此连接.
如果要在基类中提供默认的"行为"并在某些派生类中覆盖它,则必须检查返回的所有属性,GetCustomAttributes()以便仅使用派生最多的属性(列表中的第一个).
| 归档时间: |
|
| 查看次数: |
5804 次 |
| 最近记录: |