gpt4 book ai didi

c# - 如何做最小起订量可见的内部接口(interface)?

转载 作者:IT王子 更新时间:2023-10-29 04:01:05 25 4
gpt4 key购买 nike

我的 C# 解决方案中有 3 个项目。

  • 签名
  • 结构
  • 测试

签名具有公共(public)和内部接口(interface)。此外,它还有

  [assembly: InternalsVisibleTo("Structures")]
[assembly: InternalsVisibleTo("Tests")]

在 AssemblyInfo.cs 中。

结构有公共(public)类和内部类

  [assembly: InternalsVisibleTo("Tests")]

在 AssemblyInfo.cs 中。

测试有下一个来源:

<packages>
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" />
<package id="NUnit" version="2.6.4" targetFramework="net45" />
<package id="NUnitTestAdapter" version="1.2" targetFramework="net45" />
</packages>

作为 packages.config 中的 NuGet 包。

我为 Signatures 的内部接口(interface)和 Structures 的内部类编写了单元测试。运行,得到下一个结果:异常:

Type Signatures.InterfaceX 对 DynamicProxy 不可见。无法为不可访问的类型创建代理。将类型设为公开或内部类型,并使用 [assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)] 属性标记您的程序集。

似乎合乎逻辑。我加了

[assembly: InternalsVisibleTo("InternalsVisible.DynamicProxyGenAssembly2")] 

到签名和结构项目的组装信息。运行,得到下一个结果:异常:

程序集“DynamicProxyGenAssembly2,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”中的类型“CaSTLe.Proxies.IReminiscenceableDataTableProxy”正试图实现一个不可访问的接口(interface)。

我预计它会有所帮助,但没有。它只是更改了异常消息。

如何解决我的问题?

最佳答案

建议的修复消息使用 const/static 字段作为程序集名称:

[assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]

您使用了与程序集名称不对应的字符串:

[assembly: InternalsVisibleTo("InternalsVisible.DynamicProxyGenAssembly2")] 

将其更改为:

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 

您可以在错误消息中看到实际的程序集名称(应该出现在 InternalsVisibleTo 中):

Type 'Castle.Proxies.IReminiscenceableDataTableProxy' from assembly 'DynamicProxyGenAssembly2 (...)

关于c# - 如何做最小起订量可见的内部接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234369/

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