在.net核心中为不同的依赖项注入容器编写包装器

时间:2019-05-21 13:29:15

标签: c# reflection dependency-injection .net-core wrapper

我想在 .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应用程序,这样做的正确方法是什么?

0 个答案:

没有答案