【问题标题】:dll initializer methoddll初始化方法
【发布时间】:2013-02-18 17:08:53
【问题描述】:

我需要在每个 dll 中为某些事件类型注册具体的类。

public interface IDomainEventHandler<T> where T : IDomainEvent
{
    void Handle(T domainEvent);
}

我不想扫描事件处理程序,因为在继承的类中一次又一次地注册和执行相同的处理程序,但我希望在结构映射引导程序中调用每个 dll 中的初始化方法。

所以在每个 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) 明智的初始化函数?

【问题讨论】:

    标签: structuremap


    【解决方案1】:

    我使用 Registry 类来执行此操作。每个 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>();
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2011-03-14
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多