公司官方网站怎么做,手机网站怎么建立,做搜狗网站排名,做礼品贸易好的网站开源博客项目Blog使用Autofac注册并管理组件和服务#xff0c;Autofac是面向.net 的开源IOC容器#xff0c;支持通过接口、实例、程序集等方式注册组件和服务#xff0c;同时支持属性注入、方法注入等注入方式。本文学习并记录Blog项目中Autofac的使用方式。 整个Blog解… 开源博客项目Blog使用Autofac注册并管理组件和服务Autofac是面向.net 的开源IOC容器支持通过接口、实例、程序集等方式注册组件和服务同时支持属性注入、方法注入等注入方式。本文学习并记录Blog项目中Autofac的使用方式。 整个Blog解决方案主要在App.Hosting和App.Framwork项目中使用Autofac这里的使用指的是注册Autofac中间件、注册组件和服务等不包括在控制器类中传递接口实例。 App.Hosting项目中主要在Program.cs文件中注册Autofac中间件如下图所示并调用App.Framwork项目中的扩展类注册相关组件和服务。 在Program.cs文件的下半部分还调用了App.Framwork项目中的函数赋予全局静态类Storage中的Container属性赋予基于Autofac的ILifetimeScope实例对象以便在需要的地方能通过代码获取Autofac注册的组件。 App.Framwork项目主要在5个类中调用Autofac相关的类或函数主要包括 1AutofacModule类位于AutofacModule.cs命名空间为App.Framwork. DependencyInjection 主要以仓储模式注入组件该类将解决方案中所有继承自IScopedDependency 、ISingletonDependency、ITransientDependency等接口的类型注册为组件将继承自IScopedDependency接口的类型注册为每次使用都创建新实例InstancePerDependency将继承自ISingletonDependency接口的类型注册为单例模式SingleInstance将继承自ITransientDependency接口的类型注册为每次请求创建新实例InstancePerLifetimeScope同时该类将所有继承自ControllerBase的类型都注册为属性自动注入PropertiesAutowired。 2ContainerBuilderExtensions类位于ContainerBuilderExtensions.cs命名空间为App. Framwork.DependencyInjection.Extensions该类主要将解决方案的所有程序集中类型以指定字符串结尾的类型注册为每次请求创建新实例InstancePerLifetimeScope在本项目中主要是注册所有以service结尾的类。 3AspectCoreInterceptorAutofacExtensions类位于AspectCoreInterceptorAutofacExtensions.cs命名空间为App.Framwork.DependencyInjection. Extensions。该类主要基于AspectCore的动态代理接入Autofac这个没有看的太明白。 4Storage类位于Storage.cs命名空间为App.Framwork该类的属性Container类型为ILifetimeScope在App.Hosting项目的Program.cs中调用app.UseStaticContainer()该函数定义于App.Framwork项目ApplicationBuilderExtensions类位于ApplicationBuilderExtensions.cs命名空间为App.Framwork.DependencyInjection.Extensions赋予基于Autofac的ILifetimeScope实例对象值。Container属性主要在Storage类的GetService函数中用于返回指定服务的组件。
参考文献 [1]https://gitee.com/miss_you/Blog [2]https://autofac.org/ [3]https://github.com/autofac/Autofac [4]https://blog.csdn.net/Mr_Fei/article/details/129199686