2

我正在开发一个类库,但在可访问性方面遇到了麻烦。我的类库包含几个不应从其他应用程序访问的内部类。相反,我想创建一个包含所有内部类实例的单例主类,以便其他应用程序可以访问主类,然后使用该实例中的内部类。下图解释了层次结构。

在此处输入图像描述

我尝试将 Main Class 公开,Internal Classes 设为内部,但这给了我错误错误“ Inconsistent Accessibility ”。我的主要课程如下所示:

public class Main
{
    private static Main Instance;
    public static Main GetInstance()
    {
        if (Instance == null)
            Instance = new Main();
        return Instance;
    }

    public Debugging Debugger = new Debugging();
}

我的一个内部类(调试)如下所示:

internal class Debugging
{
    Content....
}

所以我希望有人可以帮助我弄清楚如何使内部类只能通过我的单例主类访问。

4

3 回答 3

2

我对你的问题并不肯定你的意图是什么,所以我将它分成两个选项:

您希望外部程序集可以访问“调试”,但只能通过“主”访问

有几种方法可以做到这一点,但现在最简单的方法是保留Debugging public,但只定义internal构造函数。这将允许使用它,但外部程序集将无法实例化它们,从而迫使它们访问在Main

public class Debugging
{
    internal Debugging() { }
}

您不希望外部程序集可以访问“调试”,但仍然可以通过“Main”在您的类程序集中访问

只需将可访问性修饰符更新Main.Debuggerinternal

internal Debugging Debugger = new Debugging();
于 2013-07-19T10:38:04.843 回答
1

public如果您可以public访问它们(通过类),则必须设置所有Main类。

否则,您可以将内部类设置为internal并在类中提供一组属性Main(包装内部类的字段/方法),以便访问它们的字段/方法。您可以设置内部类的构造函数,internal以避免这些类实例化。

一般来说:从public类中公开的每个字段/方法都应该有一个public返回类型。

一些 MSDN 参考

于 2013-07-19T10:07:00.387 回答
0

如果您需要访问库外部的 Debugger 类,则需要将访问修饰符更改为 public。正如建议的那样,将构造函数设置为内部的,因此程序集之外的任何人都不能创建这些类的实例。

于 2013-07-19T10:24:56.177 回答