C# 是否可以使用工厂方法使用fluent nhibernate创建类的实例?
例如,我有一组域类。这些类实现了一个公共接口。接口是公共的,但类本身是内部的。这些类的实例可以通过使用提供的公共工厂来创建。此外,每个类实例都使用每个层次结构一个表的技术进行持久化 在这种情况下如何使用Fluent NHibernate?任何帮助都将不胜感激 谢谢,C# 是否可以使用工厂方法使用fluent nhibernate创建类的实例?,c#,fluent-nhibernate,C#,Fluent Nhibernate,例如,我有一组域类。这些类实现了一个公共接口。接口是公共的,但类本身是内部的。这些类的实例可以通过使用提供的公共工厂来创建。此外,每个类实例都使用每个层次结构一个表的技术进行持久化 在这种情况下如何使用Fluent NHibernate?任何帮助都将不胜感激 谢谢, Blake这比FNH更具体,但据我所知,您有两种选择 实现IInterceptor.Instantiate(字符串entityName、EntityMode EntityMode、对象id)-您还必须将所述拦截器与启动的任何NHib
Blake这比FNH更具体,但据我所知,您有两种选择
IInterceptor.Instantiate(字符串entityName、EntityMode EntityMode、对象id)
-您还必须将所述拦截器与启动的任何NHibernate会话相关联ReflectionOptimizer'并实现
CreateInstance()`方法(要为其构建工厂的每种类型都需要一个方法)。有一些配置和接线我不完全理解,我怀疑这基本上是方法1的一个滥杀版本如果您想为域类注入持久化字段和属性,我不确定是否有办法做到这一点,因为这是一件非常重要的事情。您还可以利用NHibernate 2.0+中的事件系统。
Load
事件也允许您为NHibernate创建对象。您所要做的就是创建一个ILoadEventListener
的实现,将其添加到ISessionFactory
或ISession
的事件侦听器中,然后就可以了
using NHibernate.Event.Default
public class MyCreatorListener : DefaultLoadEventListener
{
// this is the single method defined by the LoadEventListener interface
public override void OnLoad(LoadEvent theEvent, LoadType loadType)
{
if(null == theEvent.InstanceToLoad) // Not null if user supplied object
{
theEvent.InstanceToLoad = MyFactory.Create(loadType); // Or whatever.
}
}
}