gpt4 book ai didi

c# - NHibernate 多事件监听器

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:04 25 4
gpt4 key购买 nike

是否可以注册多个事件监听器?

我们目前使用 .ExposeConfiguration(AddSoftDelete) 注册事件监听器,其中 AddSoftDelete 是一个注册监听器的类;

private static void AddSoftDelete(Configuration config)
{
config.SetListener(ListenerType.Delete, new SoftDeleteListener());
}

我们发现我们不能注册多个相同类型的事件监听器,即我们不能为“ListenerType.Delete”注册一个以上的监听器。

是否可以在不覆盖任何现有监听器的情况下注册新监听器?

解决了...

已成功使用以下代码注册多个监听器;

config.EventListeners.PreUpdateEventListeners = new IPreUpdateEventListener[]
{
new Listener1(),
new Listener2()
};

为每个 ListenerType 重复。

最佳答案

听众实际上并不是听众,他们是实现者。一个“事件”只能有一个实现。

您可以实现一个监听器,您可以在其中插入多个实现。例如不同实体类型的实现。您可以将“事件”传递给每个实现,直到其中一个实现处理它(例如,当实现 ISoftDeletable 接口(interface)时,SoftDeleteImplementor 正在处理它)。您需要关心相互竞争的实现者(更多的人可能正在处理它,您调用它们的顺序很重要)。

关于c# - NHibernate 多事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138828/

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