新建一个wabapi项目
在nuget中引入:Autofac
创建一个类AddAutoFacHelp并继承Autofac.Module
namespace WebAPI
{
public class AddAutoFacHelp:Autofac.Module
{
}
}
鼠标选中Module直接F12,可以看到我们要用的Load虚方法方法(protected override void Load(ContainerBuilder builder)){
//添加代码:
//获取项目绝对路经
var basePath=Directory.GetCurrentDirectory();
var dllName = “model模型的dll”;
//获取dll的绝对路径
var servicedll = Path.Combine(basePath, dllName);
//判断dll在不在
if (!File.Exists(servicedll))
{
var msg = dllName+"丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。";
throw new Exception(msg);
}
// 获取 Service.dll 程序集服务,并注册
var serviceAssembly = Assembly.LoadFrom(servicedll);
builder.RegisterAssemblyTypes(serviceAssembly)
.AsImplementedInterfaces()
.InstancePerDependency()
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
}
需要在program中来指定只用autofac自定义的容器
添加:Autofac.Extensions.DependencyInjection引用
我们需要自定义需要添加:
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
UseServiceProviderFactory:用来指定我们用那个容器,在core里面默认是ioc这里是把容器指定为我们自己用的autofac容器
添加这个代码 就是实现了autofac自动注入
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterModule(new AutofacModuleRegister());
});
RegisterModule:初始化的新实例