簡體   English   中英

從不同的Dll文件訪問內部類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM