的C# Accessing a subclass property複製特定屬性 - 查看其他解決方案的方法存在。設計模式在子類
我有一個對象模型,其中每個對象都有一個父對象,我想訪問具有每個對象的特定類型的父屬性。所以例如車輪應擁有Car類型的父母財產。我的猜測是,有一個既定的設計模式來實現這一點(在.NET中)。但是,我還沒有找到這樣的設計我想出了這個樣子的
public class BaseObject<T> where T : BaseObject<T>
{
private T mParent;
protected T Parent
{
get { return mParent; }
}
public BaseObject(T parent)
{
mParent = parent;
}
public void Save() ...
public void Delete() ...
public BaseObject<T> Clone() ...
}
public class Car : BaseObject<Car>
{
public Car(Car parent) : base(parent)
{
}
public bool Is4WD()
{
return true;
}
}
public class Wheel : BaseObject<Car>
{
public Wheel(Car parent) : base(parent)
{
}
public float RequiredTirePressure()
{
return Parent.Is4WD() ? 3.0f : 2.5f;
}
}
你看到任何設計或性能缺點這種做法?你能推薦一個更好的設計嗎?
你想解決什麼問題?使用泛型非常不簡單。 – jgauffin
我的數據是由一個對象樹與可能這反過來又可能有自己的孩子等子對象要做到這一點每個對象都有它的父級的引用在那裏可以註冊/註銷主要對象。在許多情況下,子對象訪問父對象的方法/屬性。一種方法是將父類屬性從基類型轉換爲正確類型,但我想知道是否有類型安全聲明的方法。 –
Liskovs Substitution Principle說任何接受基類的方法都應該適用於所有不同的子類。你所要求的是違反該原則,因此不是真正的「是」關係。如果你能用真實的類名來說明你的問題,而不是你現在添加的抽象名稱,那會更好。 – jgauffin