
依赖注入(DependencyInjection)
C#
singhwong
C#,UWP,.Net
展开
-
七、使用其他DI容器
Microsoft.Extensions.DependencyInjection是一个简单的DI容器;许多第三方的容器都提供了额外的功能。例如,Autofac允许在配置文件中配置服务。ASP.NET Core使用Microsoft.Extensions.DependencyInjection,除此之外,还可以使用适配器配置它——使用其他第三方依赖注入容器,如Autofac、Rezolver、S...原创 2020-05-07 14:12:26 · 378 阅读 · 0 评论 -
六、创建平台独立性
依赖注入也可在平台独立的库中使用特定于平台的特性。例如,可以创建一个用于WPF、UWP和Xamarin应用程序的.NET标准库,并将调用转换为特定于平台的API。调用Web API可以实现,因此它是一个完全独立的平台。如打开消息对话框这样简单的事情,是特定于平台的。下一个示例解决方案PlatformIndependenceSample由下表中的项目组成。注意:为了在Visual S...原创 2020-05-06 16:15:44 · 376 阅读 · 0 评论 -
五、使用配置文件
需要在配置文件中配置服务时,也可以使用前面所示的选项。然而,有一种更直接的方法:可以使用.NET配置特性和对选项的扩展。使用NuGet包Microsoft.Extensions.Options.ConfigurationExtensions中的配置可以扩展选项。样例DIWithConfiguration使用如下NuGet包和名称空间:包Microsoft.Extensions.Conf...原创 2020-05-04 01:51:13 · 554 阅读 · 0 评论 -
四、使用选项初始化服务
如前所述,一个服务可以注入另一个服务中。这也可以用来初始化一个带有选项的服务。不能使用服务的构造函数定义非服务协定来进行初始化,因为容器不知道如何初始化它。服务是必要的。但是,为了传递服务的选项,还可以使用已经可用于.NET Core的服务。示例DIWithOptions使用这些NuGet包和名称空间:包Microsoft.Extensions.DependencyInjection...原创 2020-05-03 21:26:50 · 627 阅读 · 0 评论 -
三、服务的生命周期
服务的生命周期定义了服务实例的存在时间。它是否存在于应用程序的生命周期中?每个请求都创建了一个新实例吗?中间还有一些东西,如后面所述。将服务注册为单例总是返回相同的实例,将服务注册为瞬态,每次注入服务时都会返回一个新对象。还有更多的选择,有更多的问题需要考虑。下面的示例将显示生命周期的特性和问题。该示例还用服务实现了IDisposable接口,因此可以看到这是如何处理的。示例Service...原创 2020-05-02 23:24:17 · 3100 阅读 · 0 评论 -
二、使用.NET Core ID容器
在依赖注入容器中,可以在应用程序中有一个位置,在其中定义什么协定映射到哪个特定的实现上,还可以指定是应该将服务作为一个单例来使用,还是应该在每次使用时创建一个新实例。在下一个示例中,使用前面创建的GreetingService来实现IGreetingService和HomeController类,但这次我们使用依赖注入容器。示例WithDIContainer使用了如下NuGet包和名称空间...原创 2020-05-02 17:27:44 · 497 阅读 · 0 评论 -
一、依赖注入的概念
更快的开发周期需要单元测试和更好的可更新性。更改一些代码,不应该导致意外位置出现错误。创建更模块化的、减少依赖项的应用程序,有助于防止这种错误。依赖注入(Dependency Injection,DI)允许从类的外部注入依赖项,因此注入依赖项的类只需要知道一个协定(通常是C#接口)。这个类可以独立于其对象的创建。依赖注入更便于单元测试。在单元测试中,只需要测试特定的类,需要的依赖项可以替换...原创 2020-05-02 15:48:51 · 1062 阅读 · 0 评论