.net core2.0下Ioc容器Autofac使用
Autofac基本使用
下面以狗的列子来介绍autofac,nuget搜索Autofac进行安装
public interface IDog { ////// 品种 /// string Breed { get; } /// /// 名称 /// string Name { get; } } /// /// 萨摩耶 /// public class Samoyed : IDog { /// /// 品种 /// public string Breed { get { return "Samoyed(萨摩耶)"; } } /// /// 名称 /// public string Name { get { return "小黄"; } } } /// /// 藏獒 /// public class TibetanMastiff : IDog { /// /// 品种 /// public string Breed { get { return "Mastiff Class(獒犬类)"; } } /// /// 名称 /// public string Name { get { return "小黑"; } } }
1.RegisterType
public static void Register() { var builder = new ContainerBuilder(); //注册Samoyed指定为IDog实现 builder.RegisterType2.RegisterAssemblyTypes().As (); builder.RegisterType ().As (); using (var container = builder.Build()) { var dogs = container.Resolve >(); foreach (var dog in dogs) { Console.WriteLine($"名称:{dog.Name},品种:{dog.Breed}"); } } }
public static void RegisterAssemblyTypes() { var builder = new ContainerBuilder(); //注册程序集下所有类型 builder.RegisterAssemblyTypes(typeof(Program).Assembly).AsImplementedInterfaces(); using (var container = builder.Build()) { var dogs = container.Resolve>(); foreach (var dog in dogs) { Console.WriteLine($"名称:{dog.Name},品种:{dog.Breed}"); } } }
直接注册程序集下的所有类型,AsImplementedInterfaces(让具体实现类型,可以该类型继承的所有接口类型找到该实现类型)
3.RegisterInstance
TibetanMastiff d = new TibetanMastiff(); builder.RegisterInstance(d).As();
4.RegisterModule
这种模式需要使用配置文件进行注册,个人更喜欢代码直接注册的方式,毕竟配置文件修改容易遗忘和出错。这里就不介绍该方式了。
遗留问题:上面的注册代码,自己写写demo的时候没啥问题。但是运用到项目里面就很繁琐了,需要自己一个个类型注册,后面会提供解决方案。
回到顶部回到顶部回到顶部回到顶部回到顶部回到顶部http://autofac.readthedocs.io/en/latest/getting-started/index.html。下面给出本文示例代码:Ywdsoft.AutofacTest
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。
因为,我的写作热情也离不开您的肯定支持。
感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是焰尾迭 。