2012-10-05 79 views
0

扩展类时,是否可以“更改”属性的值?一些类似下面:在扩展类时扩展/更改属性的值

public class Mammal 
{ 
    [Validation(Required=true, HelpMessage="This is the body shape of a mammal")] 
    public virtual string BodyShape { get; set; } 

} 

public class Dog : Mammal 
{ 
    [Validation(HelpMessage = "This is the body shape of a dog")] 
    public override string BodyShape 
    { 
     get 
     { 
      return base.BodyShape; 
     } 
     set 
     { 
      base.BodyShape = value; 
     } 
    } 
} 

我希望能够读取Dog.BodyShape属性,并把它作为必需=真和HelpMessage =“这是狗的体形”。这可能吗?如果没有,那么可以直接在编译器中添加'元数据'信息到属性的任何建议的替代方案?

回答

0

我不认为你可以继承属性;他们被附加到一个特定的方法/类。 但是,您可以更改验证的标准实现,以检查基类具有相似名称的属性。

+0

属性是继承的,具体取决于AttributeUsage.Inherited属性的值(http://msdn.microsoft.com/zh-cn/library/tw5zxet9(v=vs.110).aspx) – dugas