C# FluentNHibernate重写:使用非泛型版本的Assembly的重写
我有一个从通用实现继承的存储库类:C# FluentNHibernate重写:使用非泛型版本的Assembly的重写,c#,generics,fluent-nhibernate,overriding,automapping,C#,Generics,Fluent Nhibernate,Overriding,Automapping,我有一个从通用实现继承的存储库类: public namespace RepositoryImplementation { public class PersonRepository : Web.Generics.GenericNHibernateRepository<Person> } 问题是:UseOverridesFromAssemblyOf是一种通用方法,我不能这样做: .UseOverridesFromAssemblyOf<PersonMappingOver
public namespace RepositoryImplementation {
public class PersonRepository : Web.Generics.GenericNHibernateRepository<Person>
}
问题是:UseOverridesFromAssemblyOf
是一种通用方法,我不能这样做:
.UseOverridesFromAssemblyOf<PersonMappingOverride>();
.UseOverridesFromAssemblyOf();
因为这会导致循环引用。我不希望通用存储库知道存储库或映射覆盖类,因为它们因项目而异
我看到了另一种解决方案:在GenericNHibernateRepository类中,我可以执行此操作。GetType()并获取存储库实现类型(例如:PersonRepository)。但是,我无法调用UseOverridesFromAssemblyOf()
传递类型
在FluentNHibernate中是否有其他配置覆盖的方法?如果不是,我如何调用UseOverridesFromAssemblyOf
,而不使通用存储库依赖于存储库实现或映射覆盖类
(来源:)以下是我的做法(来源:上)
AutoMap.AssemblyOf<Person>()
.Where(type => type.Namespace == "Entities")
.UseOverridesFromAssemblyOf<PersonMappingOverride>();
.UseOverridesFromAssemblyOf<PersonMappingOverride>();
am1.GetType()
.GetMethod("UseOverridesFromAssemblyOf")
.MakeGenericMethod(mappings.GetType())
.Invoke(am1,null);