Structuremap类库模块

时间:2016-10-28 07:35:40

标签: c# service dependency-injection autofac structuremap

我有一个包含一些服务的类库。

使用结构图我希望这些服务在该类库中注册。这导致使用此类库的程序集不应为此类库设置依赖项,而只需调用在库本身内设置它的模块。

例如,这可以使用autofac。假设我有一个带IAAAService和IBBBService的类库。使用autofac我可以在这个类库中执行以下操作:

public class AutofacModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<AAAService>().As<IAAAService>();
        builder.RegisterType<BBBService>().As<IBBBService>();
    }
}

从应该使用库的程序集中我可以这样做:

builder.RegisterModule(new AutofacModule());

我处于一种情况,我必须使用结构图,我想做类似的事情。

这在结构图中是否可行?如果是这样,我该怎么做?

谢谢:)

1 个答案:

答案 0 :(得分:1)

在StructureMap中,有一个类似的概念叫做注册表。请查看此处了解更多详情:http://structuremap.github.io/registration/

请注意,我不建议您在类库中使用容器。容器只应在应用程序内部使用(if they are to be used at all)。

引自this article

  

DI容器只能从Composition Root引用。所有其他模块都不应该引用容器。