在C#中,是否可以将类可访问性限制为定义它的文件?

jim*_*mmy 2 c#

我不能在另一个类中声明它是私有的,因为我有几个使用它的类.我也不希望它是内部的,否则它将暴露给同一程序集中的其他类.我希望它只能访问同一文件中的类.在C#中有可能吗?

Jon*_*eet 10

C#语言中的"源文件"级别很少.

你可能最接近的是创建一个顶级类并有几个嵌套类:

class Foo
{
    internal class A
    {
        private Shared shared = new Shared();
    }

    internal class B
    {
        private Shared shared = new Shared();
    }

    private class Shared
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

说实话,这不是一个非常令人愉快的解决方案.如果一个类必须以一些其它类的可见,我通常偏好以使其内部和任一提取出那些类到另一组件与共享类在同一组件能够以其他clsses可见其中别住我真的需要了解它.


Yus*_*dın 9

从 C# 11 开始,可以使用文件访问修饰符。

从 C# 11 开始,文件上下文关键字是类型修饰符。

文件修饰符限制顶级类型的范围和对其声明的文件的可见性。文件修饰符通常应用于源生成器编写的类型。文件本地类型为源生成器提供了一种便捷的方法来避免生成的类型之间的名称冲突。文件修饰符声明文件本地类型,如下例所示:

file class HiddenWidget
{
    // implementation
}
Run Code Online (Sandbox Code Playgroud)