core6.0使用autofac实操

新建一个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:初始化的新实例

你可能感兴趣的:(C#,大数据)