- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的 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/
我是一名优秀的程序员,十分优秀!