从其他Dll文件访问内部类

冰人

我对一些本不应该起作用的代码感到困惑,但是奇怪的是,它们正在起作用,我知道我只是忽略了一些显而易见的东西。我正在查看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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章