C# 从不同的Dll文件访问内部类

C# 从不同的Dll文件访问内部类,c#,.net,accord.net,internal-class,C#,.net,Accord.net,Internal Class,我被一些不应该工作的代码弄糊涂了,但奇怪的是,这些代码正在工作,我知道我只是忽略了一些显而易见的东西。我正在查看框架的源代码,我下载了它,并且编译得很好,但是我对一些事情感到困惑。在其中一个程序集中,名为Accord.Math的文件名为。定义如下: internal static class Indices { // Lots of code // ... // ... } 你可以在电视上看到这个 在另一个名为Accord.Statistics的程序集中,有一个名为。在

我被一些不应该工作的代码弄糊涂了,但奇怪的是,这些代码正在工作,我知道我只是忽略了一些显而易见的东西。我正在查看框架的源代码,我下载了它,并且编译得很好,但是我对一些事情感到困惑。在其中一个程序集中,名为Accord.Math的文件名为。定义如下:

internal static class Indices
{
    // Lots of code
    // ...
    // ...
}
你可以在电视上看到这个

在另一个名为Accord.Statistics的程序集中,有一个名为。在该文件中,有以下行:

return Accord.Math.Indices.Random(k, n);
你可以在电视上看到这个

我对这行如何引用
Accord.Math.index
类感到困惑,因为它被标记为
internal
。我的理解是,标记为
internal
的类只能由驻留在同一DLL文件中的类访问。有人能解释一下这是如何工作的吗?

这是因为在文件中您有以下属性:

[assembly: InternalsVisibleTo("Accord.Tests.Math, PublicKey=...")] 
[assembly: InternalsVisibleTo("Accord.Tests.MachineLearning,...")] 
[assembly: InternalsVisibleTo("Accord.Tests.Statistics,...")] 
[assembly: InternalsVisibleTo("Accord.Statistics, ...")]
这些属性指定通常仅在当前程序集中可见的类型对指定的程序集可见(如果您要求它对Accord.Statistics可见)


你可以阅读更多关于

的内容,就在我以为我知道C#book中的每一个技巧的时候……我不知道你能做到这一点。谢谢你的回答!