在Nuget中引入两个Autofac.Extras.DynamicProxyAutofac.Extensions.DependencyInjection
创建类AutofacModuleRegister继承: Autofac.Module
public class AutofacModuleRegister : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(GetAssemblyByName("LogSeriver")).InstancePerLifetimeScope()//同一个Lifetime生成的对象是同一个实例
.AsImplementedInterfaces()
.EnableInterfaceInterceptors() ;
//只有类没有接口不用带后面的.InstancePerLifetimeScope()
//同一个Lifetime生成的对象是同一个实例
//.AsImplementedInterfaces()
//.EnableInterfaceInterceptors() ;
builder.RegisterAssemblyTypes(GetAssemblyByName("DAL"));
builder.RegisterAssemblyTypes(GetAssemblyByName("BLL"));
builder.RegisterAssemblyTypes(GetAssemblyByName("MailSeriver")).InstancePerLifetimeScope()
.AsImplementedInterfaces()
.EnableInterfaceInterceptors();
}
/// <summary>
/// 根据程序集名称获取程序集
/// </summary>
/// <param name="assemblyName">程序集名称</param>
public static Assembly GetAssemblyByName(string assemblyName)
{
return Assembly.Load(assemblyName);
}
}
在Program.cs 中添加
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
//调用程序集注册存入方法
builder.RegisterModule(new AutofacModuleRegister());
});
然后通过构造函数注入就行了
private readonly ChContext _context;
public UserSeiver(ChContext context)
{
_context = context;
}