星空网 > 软件开发 > ASP.net

三、服务解析(Resolving Services)

  当你完成组件注册,并将组件暴露为适当的服务后你就可以通过容器或者容器的子生命周期域来解析服务(After you have your components registered with appropriate services exposed, you can resolve services from the built container and child lifetime scopes)。你可以通过Resolve()方法来解析服务。

var builder = new ContainerBuilder();builder.RegisterType<MyComponent>.As<IService>();var container = builder.Build();using(var scope = container.BeginLifetimeScope()){
  var service = scope.Resolve<IService>(); }

  你可能已经注意到例子中是通过容器的子生命周期域对服务进行解析而不是直接使用容器(container)来接服务的——你也应该以这样的方式来解析服务。

  虽然也可以直接使用容器(container)来解析服务,但如果你这样做可能导致应用程序内存泄漏。所以建议你总是尽可能的在自生命周期域中解析服务,这样autofac能够帮助你妥善的处理对象销毁以及垃圾回收工作。你将在今后的章节中了解到更详细的内容。

  解析服务时,autofac将自动的连接服务的整个依赖层次,并且自动构件服务所需要的依赖项。当你的程序中存在循环依赖项或者依赖项缺失,那么程序将会抛出DependencyResolutionException异常。

  假设你有一个服务,但不能确定它是否已经注册到容器当中,你可以尝试使用ResolveOptional() 或者TryResolve()方法进行条件解析:

//如果已经注册了IService服务,那么它将被正确的解析,//如果没有对IService服务进行注册,那么该方法将返回nullvar service = scope.ResolveOptional<IService>();//如果IProvider进行了注册,那么provider将获得对象,//如果IProvider没有注册,那么你可以进行其他操作IProvider provider = nullif(scope.TryResolve<IProvider>(out provider)){ //服务被成功解析 }

3.1、为解析传递参数(Passing Parameters to Resolve)

明天继续...

 

PS:本系列博客是对autofac英文资料的翻译,主要目的是为了提高自己英文阅读能力,同时能够帮助有需要的人,原文地址http://autofac.readthedocs.org/en/latest/getting-started/index.html。




原标题:三、服务解析(Resolving Services)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

tiktok免拔ios卡:https://www.goluckyvip.com/tag/83236.html
ios如何上tiktok:https://www.goluckyvip.com/tag/83237.html
tiktok外网加速:https://www.goluckyvip.com/tag/83238.html
tiktok lite下载:https://www.goluckyvip.com/tag/83239.html
自动退款:https://www.goluckyvip.com/tag/8324.html
tiktok小黄车开通流程:https://www.goluckyvip.com/tag/83240.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流