gpt4 book ai didi

c# - Nhibernate 映射的内部类和 InternalsVisibleTo

转载 作者:行者123 更新时间:2023-11-30 19:31:28 25 4
gpt4 key购买 nike

我的代理生成器在为内部映射的 Nhibernate 类生成代理时遇到问题。我尝试在 assemblyinfo.cs 中使用 InternalsVisibleTo 将它们添加为可见,但它似乎不起作用。更糟糕的是,我不知道如何判断我是否已经成功地与我想要的代理程序集成为 friend ,因为如果我在 assemblyinfo.cs 中更改代理程序集公钥中的一些数字,就不会抛出任何错误。

错误:

测试方法 TestProject1.UnitTest1.TestMethod1 抛出异常:NHibernate.HibernateException:创建代理实例失败 ---> CaSTLe.DynamicProxy.Generators.GeneratorException:类型不公开,因此无法生成代理。类型:BaseSystemCore.Domain.Lot

堆栈跟踪:

CaSTLe.DynamicProxy.DefaultProxyBuilder.AssertValidType(类型目标)CaSTLe.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(类型 classToProxy,类型 [] additionalInterfacesToProxy,ProxyGenerationOptions 选项)CaSTLe.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 classToProxy,类型 [] additionalInterfacesToProxy,ProxyGenerationOptions 选项,Object [] constructorArguments,IInterceptor [] 拦截器)NHibernate.ByteCode.CaSTLe.ProxyFactory.GetProxy(对象 ID,ISessionImplementor session )C:\Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\NHibernateUtilities\NHibernateUtilities\BaseUnitOfWork.cs 中的 NHibernateUtilities.BaseUnitOfWork.handleException(异常 e):第 871 行C:\Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\NHibernateUtilities\NHibernateUtilities\BaseUnitOfWork.cs 中的 NHibernateUtilities.BaseUnitOfWork.getAllT:第 115 行C:\Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\BaseSystemCore\TestProject1\UnitTest1.cs 中的 TestProject1.UnitTest1.TestMethod1():第 71 行

有没有人曾经让这个工作过?

谢谢

艾萨克

最佳答案

NHibernate 3.2 内置了代理提供程序。我简要地查看了来源,它们似乎使用了这种格式:{0}ProxyAssembly.其中 {0} 是惰性映射类的类型名称。我还没有测试过。尝试将以下内容添加到您的 AssemblyInfo.cs 并将 {0} 替换为您的惰性类名称:

[assembly: InternalsVisibleTo("{0}ProxyAssembly")]

如果你仍然想使用旧版本的 NHibernate,你可以尝试使用这个(对于城堡字节代码提供者):

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

DynamicProxyGenAssembly2 是一个由 CaSTLe 动态生成的临时程序集。它包含派生自映射类(代理)的类。

关于c# - Nhibernate 映射的内部类和 InternalsVisibleTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151730/

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