dll初始化方法
问题描述:
我需要的是在每个dll中注册某些事件类型的具体类。dll初始化方法
public interface IDomainEventHandler<T> where T : IDomainEvent
{
void Handle(T domainEvent);
}
我不想扫描的事件处理,由于得到同样的处理程序注册,并在一次又一次的继承类执行,但我想在每个DLL的初始化方法在structuremap bootsrapper被调用。
所以在每个DLL(模块),我会包括像
public void SetEntityEventHandlers()
{
ObjectFactory.Initialize(x =>
{
x.For<IEntityBeforeUpdateEvent<Person>>()
.Add<PersonBizObj>();
x.For<IEntityBeforeUpdateEvent<Person>>()
.Add<EmployeeBizObj>();
//lets say I have a ManagerBizObj which inherits from EmployeeBizObj and I do not want it in the //event handler loop
}
}
所以没有StructureMap有这样的一种方便的方式,添加组件(DLL)明智的初始化函数?
答
我使用注册表类来做到这一点。每个DLL都有一个注册表类,用于初始化它拥有的类。 StrucureMap引导程序将每个注册表添加到配置中。
http://docs.structuremap.net/RegistryDSL.htm#section1
- A.DLL包含FooRegistry类
- B.DLL包含BarRegistry类
每个注册表类都有初始化,它包含的类代码。喜欢的东西:
ForRequestedType<IRepository>().TheDefaultIsConcreteType<InMemoryRepository>();
引导程序类具有以下代码:
ObjectFactory.Initialize(x =>
{
x.AddRegistry<FooRegistry>();
x.AddRegistry<BarRegistry>();
});
我不知道,是继承“注册表”足以使它被执行? – hazimdikenli 2013-02-20 20:52:31
引导程序仍然需要添加每个注册表。请参阅http://docs.structuremap.net/RegistryDSL.htm#section2。 – 2013-02-20 21:13:11