gpt4 book ai didi

c# - 使类只能由静态对象访问

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:43 25 4
gpt4 key购买 nike

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

(顺便说一下,您似乎有名为 SoccerMapping 的命名空间。Don't do this.)

关于c# - 使类只能由静态对象访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com