标签: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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。