我想在 .net核心项目中的依赖项注入容器周围编写包装器,以便在需要注入某些内容时在我的应用程序中,我可以使用自己的注入器,该注入器实际上是使用诸如 Autofac 和 SimpleInjection 的第三方容器进行注入的。这样,我就可以更改喷油器而无需更改代码。
我为此目的编写了一个界面,其中包含一些必需的方法:
interface IDependencyBuilder
{
void CreateContainer();
IContainer Build();
void RegisterModule<T>() where T : Module, new();
}
我已经为 Autofac 实现了它,如下所示:
public class AutofacContainerBuilder : IDependencyBuilder
{
private readonly ContainerBuilder _containerBuilder;
public AutofacContainerBuilder()
{
_containerBuilder = new ContainerBuilder();
}
public void CreateContainer()
{
throw new NotImplementedException();
}
public IContainer Build()
{
return _containerBuilder.Build();
}
public void RegisterModule<T>() where T : Autofac.Module,new()
{
_containerBuilder.RegisterModule<T>();
}
}
我认为这种实现和编写包装程序有问题。
1 。签名和输入/输出模型:我不完全知道应该在包装器中写入哪些功能以及哪些签名。
2 。 针对不同第三方的实现:要创建容器,我必须将其放入构造函数中,并且无法实现create container方法。
我希望使用包装器处理模块化应用程序中的依赖项注入。
对于模块化Web应用程序,这样做的正确方法是什么?