我正在.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()
    {
    }
}


(顺便说一句,您好像有名为SoccerMapping的名称空间。Don't do this.

10-08 14:21