C# 访问子类属性的副本- 请参阅此处的其他解决方案方法。
我有一个对象模型,其中每个对象都有一个父对象,我想使用每个对象的特定类型访问父属性。所以例如 Wheel 应该有一个 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;
}
}
您是否看到这种方法有任何设计或性能缺陷?你能推荐一个更好的设计吗?