WPF的MVVM框架Stylet开发文档 14.1 StyletIoC 简介

14.1 StyletIoC 简介

StyletIoC 是一个非常轻量级且速度极快的 IoC 容器。它被设计成只做几件事,但要以直观的方式把它们做得很好。

它使用流畅的界面进行配置 - 没有这些 XML 垃圾。它还具有零依赖性。

我现在假设您对 IoC 容器的概念相当有信心 - 如果没有,请阅读一些内容然后再回来。以后可能会写更深入的介绍。

服务和实施

StyletIoC 是围绕服务的概念构建的。服务是具体类型、抽象类型或接口,由(或可以)具体类型实现,例如:

interface IVehicle { ... }
class HotHatchback : IVehicle { ... }

这里,IVehicle是服务,HotHatchback是实现它的具体类型。请注意,这HotHatchback也是一项服务 - 由类本身实现的服务HotHatchback

当您配置 StyletIoC 时,您定义了一组关系。每个关系都在服务和实现它的类型之间。IVehicle所以在这里,我们可以告诉 StyletIoC “在服务和类型之间创建关系HotHatchback”。

稍后,当你想要一个实现时IVehicle,你可以要求 StyletIoC“给我一个实现服务的实例IVehicle,StyletIoC 将构造一个HotHatchback并将它传回给你。

解析类型——服务定位器和注入

有 3 种方法可以让 StyletIoC 为我们构造一个类型:

  1. 通过IContainer.Get直接调用
  2. 构造函数注入
  3. 属性注入

直接调用IContainer.Get是最容易解释的,看起来像这样:

var ioc = ... // Covered in lots of detail elsewhere
var vehicle = ioc.Get<IVehicle>();

尽管这看起来很诱人,但这应该只在您的应用程序的根目录中完成——在其他地方使用构造函数注入和参数注入。

当 StyletIoC 为您构造一个类型时,它会寻找一个构造函数,该构造函数具有它知道如何解析的类型参数。然后它将解析这些类型,并将它们注入构造函数。例如:

class Engine { ... }
class Car
{
   public Car(Engine engine)
   {
      // 'engine' contains a new instance of Engine
   }
}

这是从 StyletIoC 中获取新实例的最常见方式 - StyletIoC 构造的每个类型都在其构造函数中列出其依赖项,StyletIoC 将构造每个类型,并注入其依赖_项_。

如果你愿意,你也可以进行参数注入,前提是要注入的参数具有 属性[Inject],例如:

class Engine { ... }
class Car
{
   [Inject]
   public Engine Engine { get; set; }
}

各自的各种优点将在别处讨论。

项目原地址:https://github.com/canton7/Stylet
当前文档原地址:https://github.com/canton7/Stylet/wiki/StyletIoC-Introduction

上一篇:WPF的MVVM框架Stylet开发文档 13.验证模型基类ValidatingModelBase
下一篇:WPF的MVVM框架Stylet开发文档 14.2 StyletIoC 配置

你可能感兴趣的:(MVVM,Stylet框架,c#,.net,wpf)