2
我有一個在屬性標記的基類中的屬性,我想改變我的每個派生類中的一些屬性。做這個的最好方式是什麼?更改派生類中屬性的值?
從我所知道的,我必須在我的基類中定義屬性爲抽象,並重寫每個基類中的屬性,並重新定義所有屬性。這似乎真的是多餘的,我並不是瘋狂的,因爲我將不得不重複每個派生類中的通用屬性。
這是我想要做的一個簡單的例子。我想在派生類中更改MyAttribute
,但將屬性中的所有其他屬性保留在同一個地方(即我不想重新定義XmlElement
多次)。這甚至有可能嗎?還是有更好的方法來做到這一點?或者我完全濫用屬性?
using System;
using System.Xml;
using System.Xml.Serialization;
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class MyAttribute : System.Attribute
{
public MyAttribute() {}
public string A { get; set; }
public string B { get; set; }
}
public abstract class BaseClass
{
public BaseClass() {}
[XmlElement("some_property")]
[MyAttribute(A = "Value1", B = "Value2")]
public string SomeProperty { get; set; }
}
public class FirstDerivedClass : BaseClass
{
//I want to change value B to something else
//in the MyAttribute attribute on property SomeProperty
}
public class SecondDerivedClass : BaseClass
{
//I want to change value B to yet another value
//in the MyAttribute attribute on property SomeProperty
}
「或者我在這裏完全濫用屬性?」 - 從這個角度來看,這就是它的感覺。你使用你的實際屬性是什麼樣的東西? – AakashM 2010-04-23 17:15:08
在一個小項目上,我嘗試了反射,並使用屬性來生成帶有錯誤消息和類似內容的html表單。再次,這可能不是最好的屬性的使用,但嘿,我學到了一些新的東西。 – wsanville 2010-04-23 20:02:53