NHibernate事件监听器

Chr*_*ris 5 nhibernate

我正在尝试使用FluentNHibernate向我的NHibernate配置添加IPostLoadEventListener的实现.我可以这样说明:

如何通过流畅的nhibernate添加事件监听器?

但是,创建一个新数组来替换旧数组会完全丢弃任何现有的事件侦听器.我可以像这样绕过它:

return Fluently.Configure()
    .Database(config)
    .Mappings(m => m.AutoMappings.Add(mappings))
    .ExposeConfiguration(cfg =>
        {
            cfg.EventListeners.PostLoadEventListeners =
                new IPostLoadEventListener[] { 
                    new UtcDateEventListener(),
                    new DefaultPostLoadEventListener() // <<< this one is the default
                };
            cfg.EventListeners.SaveOrUpdateEventListeners =
                new ISaveOrUpdateEventListener[] { 
                    new UtcDateEventListener(),
                    new DefaultSaveOrUpdateEventListener() // <<< this one is the default
                };
        })
    .BuildConfiguration()
    .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

但我只通过单步执行代码来确定我覆盖的默认事件监听器.我想添加我的事件监听器而不会覆盖任何现有的事件监听器,但是就像我上面所示,这样做对我来说似乎非常臭.现有的事件侦听器作为数组公开(而不是集合或列表,这将更有意义).有没有更清洁的方法来处理这个?

moo*_*000 5

你的意思是这样的:

using System.Linq;

...

var list = cfg.EventListeners.PostLoadEventListeners.ToList();
list.Add(new MyPostLoadEventListener());
cfg.EventListeners.PostLoadEventListeners = list.ToArray();
Run Code Online (Sandbox Code Playgroud)

那应该工作:)