我有一个包含一些服务的类库。
使用结构图我希望这些服务在该类库中注册。这导致使用此类库的程序集不应为此类库设置依赖项,而只需调用在库本身内设置它的模块。
例如,这可以使用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());
我处于一种情况,我必须使用结构图,我想做类似的事情。
这在结构图中是否可行?如果是这样,我该怎么做?
谢谢:)
答案 0 :(得分:1)
在StructureMap中,有一个类似的概念叫做注册表。请查看此处了解更多详情:http://structuremap.github.io/registration/
请注意,我不建议您在类库中使用容器。容器只应在应用程序内部使用(if they are to be used at all)。
引自this article:
DI容器只能从Composition Root引用。所有其他模块都不应该引用容器。