我有一个带有一些子(内部,非派生)类的类。理想情况下,我希望子类的某些字段可以由父级修改,但不能公开。 C#中有设计可以实现这一目标吗?我认为无法使用典型的访问修饰符(受保护,私有,公共等)
例如,想象
Class Car{
private Wheel wheel;
Class Wheel
{
//I want this to be only accessible within Car and Wheel
private int wheelSize;
}
}
所以,那不是我的真实代码,而是传达了我想做的事情的想法。
答案 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();
}
}