Официальный сайт от Autofa c: asp - net -core-3-0-and-generi c -hosting описывает, как интегрировать с NetCore и Autofa c. Я также следовал этому руководству, чтобы выполнить sh такое же требование, как ваше.
Просто нужно немного изменить класс BootStraper , чтобы он стал производным классом Autofa c .Module . Таким образом, вы можете получить выгоду, просто добавив очень мало чистых кодов в Startup.cs, например:
Startup.cs
public void ConfigureContainer(Autofac.ContainerBuilder builder)
{
// Register your custom BootStraper types here
// If the ordering matters, just swtich this to the first or last line
builder.RegisterModule<BootStraper>();
// Register your own things directly with Autofac, like:
builder.RegisterType<MyFoo>().As<IMyFoo>();
}
BootStraper.cs
public sealed class BootStraper : Autofac.Module
{
// public ContainerBuilder Builder { get; set; }
protected override void Load(Autofac.Containerbuilder builder)
{
base.Load(builder);
builder.RegisterType(typeof(Foo1));
builder.RegisterType(typeof(Foo2));
builder.RegisterType(typeof(Foo3));
builder.RegisterType(typeof(Foo4));
builder.RegisterType(typeof(Foo5));
// RegisterTypeSingleton() could be replaced by either
// 1.registering directly here or
// 2.putting in ConfigureContainer() section in Startup
builder.RegisterType(typeof(Foo6)).SingleInstance();
}
//public void RegisterTypeSingleton(Type type)
//{
// Builder.RegisterType(type).SingleInstance();
//}
}
Не забудьте добавить эту строку при создании хост-компоновщика.
hostBuilder.UseServiceProviderFactory(new AutofacServiceProviderFactory())
Это расширение c для autofa - пакет из Autofac.Extensions.DependencyInjection
.