<分区>
假设我有一个 Apple 类
和一个 AppleFactory
类。
没有人应该能够使用 Apple redApple = new Apple()
。相反,新苹果应该只能从 AppleFactory.Create()
中创建。
这意味着除了 AppleFactory 类之外,任何人都不能访问 Apple 的构造函数。
如何做到这一点?
编辑:Apple
更像是一个AppleModel
。所以那里只有 Properties。
<分区>
假设我有一个 Apple 类
和一个 AppleFactory
类。
没有人应该能够使用 Apple redApple = new Apple()
。相反,新苹果应该只能从 AppleFactory.Create()
中创建。
这意味着除了 AppleFactory 类之外,任何人都不能访问 Apple 的构造函数。
如何做到这一点?
编辑:Apple
更像是一个AppleModel
。所以那里只有 Properties。
最佳答案
如果您希望不同的类型充当工厂,那么您可以获得的最接近的是internal
:
public sealed class Apple() {
internal Apple() {}
}
public class AppleFactory() {
public Apple CreateApple() => new Apple();
}
但是,如果您可以将工厂作为 Apple
上的静态方法,那么您可以将所有内容保持为私有(private)
:
public sealed class Apple() {
private Apple() {}
public static Apple Create() => new Apple();
}
关于c# - 阻止访问构造函数/仅特定类可以访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47678053/