C# NHibernate多事件侦听器
是否可以注册多个事件侦听器 我们目前使用.ExposeConfiguration(AddSoftDelete)注册事件侦听器,其中AddSoftDelete是注册侦听器的类C# NHibernate多事件侦听器,c#,nhibernate,fluent-nhibernate,addeventlistener,C#,Nhibernate,Fluent Nhibernate,Addeventlistener,是否可以注册多个事件侦听器 我们目前使用.ExposeConfiguration(AddSoftDelete)注册事件侦听器,其中AddSoftDelete是注册侦听器的类 private static void AddSoftDelete(Configuration config) { config.SetListener(ListenerType.Delete, new SoftDeleteListener()); } 我们发现,我们不能注册同一类型的多个事件侦听器,也就是说,我们
private static void AddSoftDelete(Configuration config)
{
config.SetListener(ListenerType.Delete, new SoftDeleteListener());
}
我们发现,我们不能注册同一类型的多个事件侦听器,也就是说,我们不能为“ListenerType.Delete”注册多个侦听器
是否可以在不覆盖任何现有侦听器的情况下注册新的侦听器
解决了
使用以下代码注册多个侦听器
config.EventListeners.PreUpdateEventListeners = new IPreUpdateEventListener[]
{
new Listener1(),
new Listener2()
};
对每个ListenerType重复此操作。为什么需要注册多个ListenerType。删除
如果一种类型上有多个事件侦听器,则应用程序将出现一些性能问题。如果要使用此侦听器处理不同的实体,请在SoftDeleteListener类中执行此操作。为什么需要注册多个ListenerType.Delete
如果一种类型上有多个事件侦听器,则应用程序将出现一些性能问题。如果您想使用此侦听器处理不同的实体,那么请在SoftDeleteListener类中执行此操作。我在代码中执行类似的操作。在NHibernate.Cfg.Configuration对象上应该有一个AppendListeners(ListenerType类型,object[]listeners)方法
还有一个SetListeners方法,我假设它将替换侦听器列表,而不是添加到列表中。我在代码中也做了类似的操作。在NHibernate.Cfg.Configuration对象上应该有一个AppendListeners(ListenerType类型,object[]listeners)方法
还有一个SetListeners方法,我假设它会替换监听器列表,而不是添加到列表中。监听器实际上不是监听器,而是实现者。“事件”只能有一个实现
您可以实现一个侦听器,在其中可以插入多个实现。例如,不同实体类型的实现。您可以将“事件”传递给每个实现,直到其中一个处理它为止(例如,当实现
ISoftDeletable
接口时,SoftDeleteImplementor
正在处理它)。您需要关心相互竞争的实现者(处理它的人越多,您调用它们的顺序就越重要)。侦听器实际上不是侦听器,而是实现者。“事件”只能有一个实现
您可以实现一个侦听器,在其中可以插入多个实现。例如,不同实体类型的实现。您可以将“事件”传递给每个实现,直到其中一个处理它为止(例如,当实现
ISoftDeletable
接口时,SoftDeleteImplementor
正在处理它)。您需要关心相互竞争的实现者(处理它的人越多,您调用它们的顺序就越重要)。我同意,这只是一个示例。这个问题与注册同一类型的多个侦听器有关。如果有帮助,让我们假设侦听器是另一种类型,即postpdate、PreInsert etcOK。只需添加另一行“config.SetListener(ListenerType.Delete,new SoftDeleteListener());”。就这样。我同意,这只是一个例子。这个问题与注册同一类型的多个侦听器有关。如果有帮助,让我们假设侦听器是另一种类型,即postpdate、PreInsert etcOK。只需添加另一行“config.SetListener(ListenerType.Delete,new SoftDeleteListener());”。就是这样。这对我来说很有意义,这是一个很好的解释,它将我的思想引导到正确的轨道上!这对我来说很有意义,这是一个很好的解释,将我的思想引导到正确的轨道上!有一个SetListeners(ListenerType,object[])
方法应该按照您描述的做。有一个SetListeners(ListenerType,object[])
方法应该按照您描述的做。