96SEO 2026-02-23 14:40 11
中使用DI生命周期IServiceProvider的服务定位器方法

服务定位器(ServiceLocator)依赖注入(Dependency
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.DependencyInjection
3、ServiceCollection用来构造容器对象IServiceProvider
。
调用ServiceCollection的BuildServiceProvider()创建的ServiceProvider可以用来获取BuildServiceProvider()之前ServiceCollection中的对象。
SayHi(){Console.WriteLine($你好我是{Name});}
ServiceCollection();services.AddTransientTestServiceImpl();using
services.BuildServiceProvider()){TestServiceImpl
sp.GetRequiredServiceTestServiceImpl();testService.Name
ServiceCollection();services.AddTransientTestServiceImpl();using
services.BuildServiceProvider()){var
sp.GetServiceTestServiceImpl();var
sp.GetServiceTestServiceImpl();Console.WriteLine(object.ReferenceEquals(ts1,
ServiceCollection();services.AddSingletonTestServiceImpl();using
services.BuildServiceProvider()){var
sp.GetServiceTestServiceImpl();var
sp.GetServiceTestServiceImpl();Console.WriteLine(object.ReferenceEquals(ts1,
ServiceCollection();services.AddScopedTestServiceImpl();using
services.BuildServiceProvider()){using
scope.ServiceProvider.GetServiceTestServiceImpl();var
scope.ServiceProvider.GetServiceTestServiceImpl();Console.WriteLine(object.ReferenceEquals(ts1,
GetService和GetRequiredService有生命区别
GetRequiredService如果找不到注入的类会抛出异常。
生命周期的选择如果类无状态建议为Singleton如果类有状态且有Scope控制建议为Scoped因为通常这种Scope控制下的代码都是运行在同一个线程中的没有并发修改的问题在使用Transient的时候要谨慎。
GetRequiredServiceT()如果获取不到对象则抛异常object
GetServicesT()适用于可能有很多满足条件的服务IEnumerableobject
1、依赖注入是有“传染性”的如果一个类的对象是通过DI创建的那么这个类的构造函数中声明的
所有服务类型的参数都会被DI赋值但是如果一个对象是程序员手动创建的那么
这个对象就和DI没有关系它的构造函数中声明的服务类型参数就不会被自动赋值。
3、第三方DI容器Autofac等。
Autofac优点支持属性注入、基于名字注入、基于约定的注入等。
1、创建一个json文件文件名随意比如config.json设置“
2、NuGet安装Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json。
[**/bin,**/bower_components,**/jspm_packages,**/node_modules,**/obj,**/platforms],name:
ConfigurationBuilder();configBuilder.AddJsonFile(
config.GetSection(proxy:address).Value;Console.WriteLine(name);Console.WriteLine(proxyAddress);}optional参数表示这个文件是否可选。
初学时建议optional设置为false这样写错了的话能够及时发现。
reloadOnChange参数表示如果文件修改了是否重新加载配置。
1、NuGet安装Microsoft.Extensions.Configuration.Binder
ConfigurationBuilder();configBuilder.AddJsonFile(
configRoot.GetSection(proxy).GetProxy();Console.WriteLine(proxy.Address);Console.WriteLine(proxy.Port);Config
configRoot.GetConfig();Console.WriteLine(config.Name);Console.WriteLine(config.Proxy.Address);
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback