.Net 程序集和内部访问修饰符的使用

.Net assemblies and internal access modifier usage

我读了几个主题,用谷歌搜索了很多网站,读了很多关于 "internal" 访问修饰符的定义。但仍然令人困惑。我找不到 assembly 的确切定义。

让我们假设在 Visual Studio 中我有解决方案,其中我有两个项目 -

ProjectA (NameSpaceA), ProjectB (NameSpaceB).
ProjectA has references of ProjectB.

Each project has 2 class (.cs) files
 - ProjectA (ClassA1.cs, ClassA2.cs)
 - ProjectB (ClassB1.cs, ClassB2.cs)

在 ClassA1.cs 文件中我有两个 classes:A1ClassOne,A1ClassTwo。在所有其他 .cs 文件中,每个文件只有一个 class。

解决方案中的每个 class 都是独立的 class(没有派生的 classes)

问题:如果在 A1ClassOne 中我有带有访问修饰符 "internal" 的方法,那么可以从哪个 classes 访问它? 上述解决方案示例中的汇编是什么意思?整体解决方案?或者每个项目都是不同的程序集(解决方案中的两个程序集)?或者每个 class (.cs) 文件?如果一个 .cs 文件中有多个 class 怎么办?

换句话说,我需要汇编的解决方案说明。

internal 意味着您可以 'see' 从同一程序集(.DLL、.EXE)

中的 类(引用、派生等)

Question: If in A1ClassOne I have method with access modifier "internal", then from which classes it will be accessible?

来自与该方法所在的同一程序集中的所有 类。

What is meant by assembly in above solution example? Whole solution? Or each project is different assembly (two assemblies in solution)? Or each class (.cs) file? What if there are several classes in one .cs file?

.DLL 是一个程序集。一个.EXE也是,通常对应一个项目,是的。

ProjectA (NameSpaceA)
    - ref ProjectB
    - ClassA1.cs
        - A1ClassOne
            - internal Method1
        - A1ClassTwo
    - ClassA2.cs
ProjectB (NameSpaceB)
    - ClassB1.cs
    - ClassB2.cs

程序集 'A' 将是 A1ClassOneA1ClassTwoMethod1 可以从他们那里访问。

程序集 'B' 将是所有 类 在 ClassB1 和 ClassB2 文件中定义的。他们无法访问 Method1.