Ice*_*ind 3 .net c# internal-class accord.net
我对一些不应该工作的代码感到困惑,但奇怪的是,工作正常,我知道我只是忽略了一些明显的东西.我正在查看Accord.NET框架的源代码,我下载了它并且编译得很好,但我对某些事感到困惑.在其中一个程序集中,名为Accord.Math的文件名为Indices.cs.这是定义:
internal static class Indices
{
// Lots of code
// ...
// ...
}
Run Code Online (Sandbox Code Playgroud)
你可以在第35行看到这个.
在另一个名为Accord.Statistics的程序集中,有一个名为Tools.cs的文件.在该文件中,有这一行:
return Accord.Math.Indices.Random(k, n);
Run Code Online (Sandbox Code Playgroud)
你可以在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, ...")]
Run Code Online (Sandbox Code Playgroud)
这些属性指定仅在当前程序集中通常可见的类型对指定程序集可见(如果您要求它对Accord.Statistics可见).
您可以在MSDN上阅读更多相关信息InternalsVisibleToAttribute
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |