的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