我对一些不起作用的代码感到困惑,但奇怪的是,它们正在起作用,我知道我只是忽略了一些显而易见的事情。我正在查看Accord.NET框架的源代码,我下载了它并对其进行了很好的编译,但是我对某些事情感到困惑。在其中一个程序集中,名为Accord.Math的文件名为Indices.cs。这是定义:
internal static class Indices
{
// Lots of code
// ...
// ...
}
您可以在第35行看到它。
在另一个名为Accord.Statistics的程序集中,有一个名为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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句