0

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

例如,想象

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

所以,这不是我真正的代码,但传达了我想做的事情的想法。

4

1 回答 1

3

您可以从中派生一个私有内部类,该类Wheel具有其他公共成员。该类Wheel将是抽象的。这确保不能创建它的任何实例。创建一个创建轮子的静态方法。该方法将创建 aPrivateWheel但将其返回为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();
    }
}
于 2012-11-18T20:09:08.860 回答