我正在 .Net 中创建一个库
我有一个名为 DataManager 的静态类。
public static class NewDataManager
{
public static Soccer Soccer { get; private set; }
static NewDataManager()
{
Soccer = new Classes.Soccer.Soccer();
}
}
足球课是这样的:
public class Soccer
{
public static Mapping.Mapping Mappings { get; private set; }
public Soccer()
{
Mappings = new Mapping.Mapping();
}
}
Mapping 类只是另一个公共(public)空类。
当我将这个项目用作另一个项目中的引用时,我可以像这样访问我的对象
NewDataManager.Soccer.Mappings
很好,这就是我想要的。问题是,我可以像这样初始化引用项目中的所有类
var s = new Soccer();
var m = new Mapping();
我希望这些类只能通过我的 NewDataManager
类访问,使用我的库的项目不应该能够初始化类。
我该如何限制它?
最佳答案
要防止另一个程序集实例化一个类,使其构造函数成为internal
:
public class Soccer
{
public static Mapping.Mapping Mappings { get; private set; }
internal Soccer() // <-- instead of 'public'
{
Mappings = new Mapping.Mapping();
}
}
public class Mapping
{
internal Mapping()
{
}
}
(顺便说一下,您似乎有名为 Soccer
和 Mapping
的命名空间。Don't do this.)
关于c# - 使类只能由静态对象访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195271/