ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

轻量级MVVM框架Stylet介绍:(14) StyletIoC

2022-01-15 08:31:24  阅读:18  来源: 互联网

标签:Engine ... 14 Stylet HotHatchback StyletIoC IVehicle class 轻量级


简介

StyletIoC轻量级的极快速的IoC容器。

服务和构建

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

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

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

配置 StyletIoC 时,需要定义一组关系。每个关系都介于服务与实现它的类型(或多个类型)之间。所以在这里,我们可以告诉StyletIoC"在服务IVehicle和类型HotHatchback之间建立一种关系"。

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

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

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

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

直接调用IContainer.Get,如下例:

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

看起来很简单,但是缺点是只能在应用程序的根目录才能这样做,在其他地方还是需要使用构造函数和参数注入。

构造函数注入的例子

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

属性注入的例子:

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

标签:Engine,...,14,Stylet,HotHatchback,StyletIoC,IVehicle,class,轻量级
来源: https://www.cnblogs.com/qouoww/p/15806073.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有