比方說,我有一個類:如何獲得明確的子類型,屬性
class AbstractPerson{
AbstractAttribute attr {get; set;}
}
現在,在AbstractPerson的子類,我想使用attr但是,在像這樣的特殊情況:
class Pilot: AbstractPerson {
...
(attr as SpecialAttribute).pilotID;
...
}
因爲我不想這樣做,每次我打電話attr
,我想在Pilot
,讓後面的attr
一個類型強制轉換版本的屬性,但我沒有得到這個工作。
所以,這不起作用:
class Pilot: AbstractPerson {
AbstractAttribute attr {
get
{
return (attr as SpecialAttribute);
}
set;
}
}
這甚至可能嗎?
***我知道按照慣例,「attr」應該在PascalCase中,我只是忘記了這個例子。實際上,人是一個控制者並且是一個視圖。
那麼,您將'attr'返回爲'SpecialAttribute',但由於該屬性仍然是'AbstractAttribute'類型,因此您剛剛回到起點。你可以有一個*不同的屬性,如'SpecialAttribute attrSpecial {get {return attr as SpecialAttribute; }}'然後只在'Pilot'裏面使用。 – Corak 2014-12-04 08:12:58
是的,你是對的。我雖然關於擁有另一個屬性,但是我不會擁有足以滿足兩件事情的ONE屬性:充當它的特殊事物,但仍然提供它當然具有的所有抽象事物。我認爲泛型解決方案是最好的。謝謝! – ruffy 2014-12-05 08:43:36