【问题标题】:How do I add an attribute to the field of the base class from child class?如何从子类向基类的字段添加属性?
【发布时间】:2011-12-12 15:47:40
【问题描述】:

基类:

public class XmlNameValueField : XmlBaseField
{                       
        [XmlAttribute("n")]
        [Required]
        public string Name { get; set; }

        [XmlText]
        public string Value { get; set; }        
 }

儿童班:

 public class DateField : XmlNameValueField
 {            
 }

在子类字段中Name必须有一个附加属性

[DataType (DataType.EmailAddress)]

【问题讨论】:

    标签: c# .net inheritance custom-attributes


    【解决方案1】:

    您需要在基类中将属性标记为虚拟,在子类中覆盖它并添加属性。

    【讨论】:

    • 如果基类有定义,子类不会覆盖那个定义吗?
    • @sksallaj,属性可以被继承(使用属性本身的AttributeUsageAttribute属性)
    • 那方法实现呢?如果这个人想要将实现保留在基类中而不是在子类中覆盖它怎么办?但是只为孩子附加属性?
    • @sksallaj 对不起,我不明白你的意思,你指的是哪种方法?
    • 如果它是虚拟的,您可以覆盖它并调用 base.Add(x, y) 但将属性添加到子实现可能会改变类的语义,违反 Liskov 替换原则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多