c# - 阻止访问构造函数/仅特定类可以访问

标签 c# .net architecture software-design

<分区>

假设我有一个 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/

相关文章:

javascript - MVC knockout 选择标签值赋值

c# - Asp.Net Core 2.0 中的 Configuration.GetSection 获取所有设置

c# - 有没有办法可以使用 VS2012 将堆栈跟踪发送到 C# 控制台

c# - "Resource Monitor"向我展示了比我在程序中编写的两个线程更多的线程

c# - 标签云字号计算逻辑

azure - 业务用户上传 Data Lake ETL 输入的解决方案

c++ - 如何设计CAD软件包的结构?

c# - 代码隐藏中包含 c# 和 vb.net 的 asp.net Web 应用程序

c# - 动态修改DataGrid列

ios - 关于 VIPER - Clean Architecture 的问题