将Ninject模块转换为Autofac

时间:2017-03-25 00:36:48

标签: c# ninject autofac

我现在正在学习.NetCore和Autofac,我对如何将Ninject模块转换为Autofac模块表示怀疑。

让我们看一些代码:

模块:

<div class="container">
  <div class="jumbotron">
    <h1>Bootstrap Tutorial</h1> 
    <p>Bootstrap is the most popular HTML, CSS, and JS framework for developing
    responsive, mobile-first projects on the web.</p> 
  </div>
  <p>This is some text.</p> 
  <p>This is another text.</p> 
</div>

寄存器:

using Ninject.Modules;

namespace v0.CrossCutting.Ninject.Domain.Data
{
    using v0.Domain.Data.Model.Interfaces;
    using v0.Domain.Data.Model.Classes;

    public class Model : NinjectModule
    {
        public override void Load()
        {
            try
            {
                Bind<IConfig>().To<Config>();
            }
            catch
            {
                throw;
            }
        }
    }
}

我在互联网上搜索了另一个堆栈溢出问题,但我仍然无法弄明白该怎么做。

感谢。

1 个答案:

答案 0 :(得分:3)

Autofac模块在Autofac documentation中有所描述。我对Ninject不是很熟悉,但是你似乎想要实现这样的目标:

模块类必须实现Autofac的Module类并覆盖Load方法,类似于Ninject:

public class ModelModule : Module
{
    public override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<Config>().As<IConfig>();
    }
}

稍后,您必须在容器内注册您的模块:

public class ContainerConfig
{
    public IContainer ConfigureAutofac()
    {
        var containerBuilder = new ContainerBuilder();
        containerBuilder.RegisterModule(new ModelModule());

        return containerBuilder.Build();
    }
}

顺便说一下,使用公共和静态Container方法的静态Resolve类被认为是反模式,应该避免使用。