我现在正在学习.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;
}
}
}
}
我在互联网上搜索了另一个堆栈溢出问题,但我仍然无法弄明白该怎么做。
感谢。
答案 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
类被认为是反模式,应该避免使用。