0
我從ReSharper的一條警告消息,「在構造虛擬成員發起呼叫」 Classification = new T();
:虛擬成員調用抽象類
public abstract class Creature<T> where T : new() {
protected Creature()
{
Classification = new T();
}
public abstract T Classification { get; protected set; }
}
public class Dog : Creature<Animal>
{
public override Animal Classification { get; protected set; }
}
public class Animal{
public void AnimalSpecificMethod() { }
}
我怎樣才能解決這個prolbem?也許有想法重新設計這個結構?
我想實現的是在Dog類中創建包含分類的相同類類型,因爲它已通過生物類聲明。
謝謝!
Classification屬性是否真的需要抽象?你會做任何特定的吸氣和二手設備嗎?如果沒有,只要使其非抽象(和非虛擬)。 –
http://stackoverflow.com/questions/119506/virtual-member-call-in-a-constructor?rq=1 –
可能的重複警告是因爲您在派生類之前調用派生類的方法已經構建...它可能會讓您打開異常,因爲派生類的屬性尚未初始化。最簡單的事情是創建一個初始化函數 –