gpt4 book ai didi

c# - 从不同的 Dll 文件访问内部类

转载 作者:行者123 更新时间:2023-11-30 14:27:45 25 4
gpt4 key购买 nike

我对一些不应该工作的代码感到困惑,但奇怪的是,却在工作,我知道我只是忽略了一些明显的东西。我正在查看 Accord.NET 的源代码框架,我下载了它并且编译得很好,但我对某些事情感到困惑。在其中一个名为 Accord.Math 的程序集中,有一个名为 Indices.cs 的文件。 .这是定义:

internal static class Indices
{
// Lots of code
// ...
// ...
}

您可以在 line 35 上看到这个.

在另一个名为 Accord.Statistics 的程序集中,有一个名为 Tools.cs 的文件.在该文件中,有这一行:

return Accord.Math.Indices.Random(k, n);

您可以在 line 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 可见的情况下)。

您可以阅读更多关于 InternalsVisibleToAttribute on MSDN 的信息

关于c# - 从不同的 Dll 文件访问内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31824042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com