儿童班的设计模式?

时间:2012-11-18 19:52:55

标签: c# parent-child

我有一个带有一些子(内部,非派生)类的类。理想情况下,我希望子类的某些字段可以由父级修改,但不能公开。 C#中有设计可以实现这一目标吗?我认为无法使用典型的访问修饰符(受保护,私有,公共等)

例如,想象

Class Car{
    private Wheel wheel;
    Class Wheel
    {
        //I want this to be only accessible within Car and Wheel
        private int wheelSize;
    }
}

所以,那不是我的真实代码,而是传达了我想做的事情的想法。

1 个答案:

答案 0 :(得分:3)

您可以从Wheel派生一个包含其他公共成员的私有内部类。 Wheel类是抽象的。这可以确保不会创建任何实例。创建一个创建轮子的静态方法。该方法将创建PrivateWheel,但将其返回为Wheel。车轮始终显示为Wheel,但有效地属于PrivateWheel类型。

public class Car {

    private PrivateWheel wheel;

    public Wheel { get { return wheel; } }

    public abstract class Wheel
    {
    }             

    private class PrivateWheel : Wheel
    {
        public int WheelSize { get; set; }
    }

    public static Wheel CreateWheel()
    {
        return new PrivateWheel();
    }
}