循環因此,例如,我有兩個類:C#力繼承類通過列表
Class A
{
string property1;
string property2;
}
Class B : A
{
string property3;
string property4;
....
}
於是產生了B繼承類A的屬性。他們坐在一個列表,即坐在字典
Dictionary <string, List<A>> myDictionary = new Dictionary<string, List<A>>();
List<A> myList = new List<A>();
有一個字典,包含許多列表的,所有包含類&乙對象的組合。 循環播放時,我試圖從B類對象訪問一些屬性,我有一條if語句來查找它們,但程序仍然認爲它們是A類類型,並在嘗試使用property3或property4時引發錯誤。例如:
string key = string key in dictionary;
string index = object position in list;
myDictionary[key][index].property3.someMethod();
有一種方法告訴程序,這是一個B類對象和允許使用3 & 4的屬性?
如果您不得不從基礎轉換爲派生,您可能需要重新考慮您的算法。這有時是必要的,但它是一種代碼味道(是的,我討厭這個詞,但它適用於這裏)。 – siride
是的,已經很臭了,只要你開始給B添加功能,或者本尊冒犯從A和B派生的C和D,成熟,真正成熟。看看其他方式,也許是聚合,然後再越過不歸路。 –
我不知道我明白你的意思。如果不打算向繼承類添加屬性,那麼使用繼承的意義何在? – Pry