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

时间:2017-03-01 06:05:52

标签: c# .net visual-studio .net-assembly

我阅读了几个主题,Google搜索了许多网站,阅读了关于"内部"访问修饰符。但仍然令人困惑。我找不到装配的确切定义。

让我们假设在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文件中的

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

Solution中的每个类都是单独的类(没有派生类)

问题:如果在A1ClassOne中我有方法使用访问修饰符"内部",那么从哪些类可以访问它? 上述解决方案示例中的汇编是什么意思?整体方案?或者每个项目是不同的组件(解决方案中的两个组件)?或者每个类(.cs)文件?如果一个.cs文件中有几个类怎么办?

换句话说,我需要解决方案的装配解释。

1 个答案:

答案 0 :(得分:1)

internal表示你可以从同一个程序集中的类(.DLL,.EXE)“看到”它(引用,派生等)

  

问题:如果在A1ClassOne中我有访问修饰符的方法   “内部”,然后从哪些类可以访问?

来自与该方法相同的程序集内的所有类。

  

上述解决方案示例中的装配是什么意思?整体方案?或者每一个   项目是不同的组件(解决方案中的两个组件)?或者每一个   class(.cs)文件?如果一个.cs文件中有几个类怎么办?

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

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

大会'A'将是A1ClassOneA1ClassTwo。可以从他们那里访问Method1

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