返回派生類實例的標題可能不清楚,但請看看下面的模式從基類
public abstract class Animal
{
public abstract Dog GetDog { get; }
public abstract Cat GetCat { get; }
}
public class Dog : Animal
{
public override Dog GetDog {
get { return this; }
}
public override Cat GetCat {
get { return null; }
}
}
這被認爲是一個不好的做法,在基類的屬性,返回派生類型。或者我應該這樣做
public abstract AnimalTypeEnum AnimalType { get; }
編輯:根據意見,我想我應該是什麼,我想實現更清晰。 Dog
或Cat
類的新實例將由基於特定標準的單獨函數創建,然後將返回Animal
類型給調用者。調用方法將檢查返回的實例的類型並相應地使用它。
public Animal CreateAnimal(string path)
{
//Process the document in path and create either a new instance of dog or cat
Dog dg = new Dog();
return dg;
}
什麼是你在做這個終極目標是什麼? –
@ user1556110這並沒有真正回答這個問題。這些方法將如何被實際使用? – Servy
好的...但有什麼意義?狗不應該有一個方法來獲得一隻貓,即使它返回null。 「動物狗=新狗()」有什麼問題? –