我正在尝试使用FluentNHibernate向我的NHibernate配置添加IPostLoadEventListener的实现.我可以这样说明:
但是,创建一个新数组来替换旧数组会完全丢弃任何现有的事件侦听器.我可以像这样绕过它:
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)
但我只通过单步执行代码来确定我覆盖的默认事件监听器.我想添加我的事件监听器而不会覆盖任何现有的事件监听器,但是就像我上面所示,这样做对我来说似乎非常臭.现有的事件侦听器作为数组公开(而不是集合或列表,这将更有意义).有没有更清洁的方法来处理这个?
你的意思是这样的:
using System.Linq;
...
var list = cfg.EventListeners.PostLoadEventListeners.ToList();
list.Add(new MyPostLoadEventListener());
cfg.EventListeners.PostLoadEventListeners = list.ToArray();
Run Code Online (Sandbox Code Playgroud)
那应该工作:)
归档时间: |
|
查看次数: |
3366 次 |
最近记录: |