从不同的Dll文件访问内部类
本文关键字:文件 访问 内部类 Dll | 更新日期: 2023-09-27 18:06:29
我对一些不应该工作的代码感到困惑,但奇怪的是,它正在工作,我知道我只是忽略了一些明显的东西。我在看雅阁的源代码。. NET框架,我下载了它,它的编译很好,但我对一些东西感到困惑。在一个叫做雅阁的集会上。Math是一个名为Indices.cs的文件。定义如下:
internal static class Indices
{
// Lots of code
// ...
// ...
}
您可以在第35行看到。
在另一个叫做Accord的集合里。统计方面,有一个文件叫做tools。cs。在该文件中,有这样一行:
return Accord.Math.Indices.Random(k, n);
可以在第329行看到。
我对这行如何引用Accord.Math.Indices
类感到困惑,因为它被标记为internal
。我的理解是,标记为internal
的类只能由驻留在同一DLL文件中的类访问。有人能解释一下这是怎么回事吗?
这是因为在文件AssemblyInfo.cs
中您有这些属性:
[assembly: InternalsVisibleTo("Accord.Tests.Math, PublicKey=...")]
[assembly: InternalsVisibleTo("Accord.Tests.MachineLearning,...")]
[assembly: InternalsVisibleTo("Accord.Tests.Statistics,...")]
[assembly: InternalsVisibleTo("Accord.Statistics, ...")]
这些属性指定通常仅在当前程序集中可见的类型对指定程序集中可见(在您要求对Accord.Statistics可见的情况下)。
您可以在MSDN上阅读更多关于InternalsVisibleToAttribute
的信息