[英]Accessing an internal class from a different Dll file
我對一些不應該工作的代碼感到困惑,但奇怪的是,工作正常,我知道我只是忽略了一些明顯的東西。 我正在查看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
更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.