私は主にNinjectを使用していますので、用語を混ぜてお詫び申し上げます。オートモジュールモジュール登録
宛先クラス名をロガー名として使用してNLogを処理するロガーモジュールを作成しました。これは非常によく似ています:http://docs.autofac.org/en/latest/examples/log4net.html?highlight=log4net
サービスレベルの登録をすべて担当するサービスレイヤーで作成されたモジュールもあります。ここで
public class ServiceModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register(x => new AccountService(x.Resolve<ILogger>()))
.As<IAccountService>()
.InstancePerRequest();
}
}
は私autofac登録です:実行時に
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterModule(new LoggingModule());
builder.RegisterModule(new ServiceModule());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
app.UseAutofacMiddleware(container);
app.UseAutofacMvc();
、私はILoggerですが、登録されていないと言った例外を取得し、私が引き起こしているかのモジュールが仕事について何かをしないのです。このように見えますILoggerは私のサービスモジュールでは見えませんか?
OK:
あなたがしなければならないのは、明示的にインスタンスを作成しようとせずに、あなたのタイプを登録することです。どのようにモジュールを解決ステートメントで動作させることになるでしょうか。 – Dan
'IRegistrationSource'を見てください:http://docs.autofac.org/en/latest/advanced/registration-sources.html –
ありがとう、それはうまくいくはずです – Dan