我正在.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类只是另一个公共的空类。
当我将此项目用作另一个项目的参考时,我可以访问诸如
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.)