Nitrgecht:共享/ IoC容器(Ninject: Shared DI/IoC contain

2019-09-28 10:20发布

我想分享在不同层的容器在我的应用程序。 我开始创建其初始化容器并注册类型在容器中的静态类。

public class GeneralDIModule : NinjectModule
{
    public override void Load()
    {
        Bind<IDataBroker>().To<DataBroker>().InSingletonScope();
    }
}

public abstract class IoC
{
    private static IKernel _container;

    public static void Initialize()
    {
        _container = new StandardKernel(new GeneralDIModule(), new ViewModelDIModule());
    }

    public static T Get<T>()
    {
        return _container.Get<T>();
    }
}

我注意到有一个解决方法为好。 是什么决心和取得的区别?

在我的单元测试我并不总是希望每一个注册的类型在我的容器。 是否有初始化一个空的容器的一种方式,然后注册类型,我需要。 我会在单元测试来嘲弄类型以及所以我必须要注册它们。

有一个进样法,但它说实例的生命周期内没有被管理?

可能有人请把我安置在正确的方式?

如何注册,注销对象并重置容器。

Answer 1:

Ninject默认绑定组件在短暂的生活方式和Ninject不跟踪瞬时实例。 决心在内部使用,不应由你的代码被使用,除非你真的知道自己在做什么。 如果你想嘲笑你的容器,使用在GitHub上ninject.moq扩展。 你指的是注射的方法是你自己创建的实例。 使用get和TryGet方法。



文章来源: Ninject: Shared DI/IoC container