上一文:C#依赖注入一看就会系列
链接:C#依赖注入(直白明了)讲解 一看就会系列 – 22222220 – 博客园 (cnblogs.com)
上一次我们知道了 为什么要依赖注入,这次我们就用使用人数最多的容器 来讲解下
这一次 带来AutoFac使用
1.通过nuget引入Autofac(我使用的版本是.netcore3.0);
2.在 Startup下
增加方法:
public void ConfigureContainer(ContainerBuilder builder)
{
// 直接用Autofac注册我们自定义的
builder.RegisterModule(new AutofacModuleRegister());
}
3.在Program下
完全copy
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseServiceProviderFactory(new AutofacServiceProviderFactory());
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
4.在当前目录下 新建类名为:
AutofacModuleRegister
public class AutofacModuleRegister : Autofac.Module
{
//重写Autofac管道Load方法,在这里注册注入
protected override void Load(ContainerBuilder builder)
{
Assembly serviceDLL = Assembly.Load("Servers");
var serviceTypes = serviceDLL.GetTypes().Where(t => t.Name.StartsWith("S") && !t.GetTypeInfo().IsAbstract);
foreach (var serviceType in serviceTypes)
{
foreach (var interType in serviceType.GetInterfaces())
{
var sname = serviceType.Name;
var Iname = interType.Name;
builder.RegisterType(serviceType).As(interType).InstancePerDependency()
.AsImplementedInterfaces()//自动以其实现的所有接口类型暴露(包括IDisposable接口)
.InstancePerLifetimeScope()
.PropertiesAutowired();//支持属性注入的方法;;;
}
}
}
}
5.控制器下
private Servers.SSysUser.ISSysUser sysUser;
public ValuesController(ISSysUser sysUser)
{
this.sysUser = sysUser;
}
自此注入完成
以下内容为拆分内容 :
1.新建接口 ,类
public interface IAnimal //接口
{
void SayHello();
}
///类
public class Doge : IAnimal
{
public void SayHello()
{
Console.WriteLine("旺仔");
}
}
2.IOC注册
var builder = new ContainerBuilder();//准备容器 builder.RegisterType<Doge>().As<IAnimal>();//映射对象 var container = builder.Build();//创建容器完毕 var dog = container.Resolve<IAnimal>();//通过IOC容器创建对象 dog.SayHello();
官网手册:
写的不详细 但是如果你是.netcore3.0 上面的copy走就可以了
大抵也就是几个方法 函数 可以看官网 有时间在写的细致一点
只为记录,
下一篇AutoMapper
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/283136.html