Automapper和IoC

时间:2011-03-11 18:25:53

标签: ioc-container ninject automapper

在阅读Jimmy Bogard撰写的AutoMapper and IoC博客文章后,我尝试使用Ninject作为IoC实现类似的功能。所以我从中理解的是IoC将为 IConfiguration 提供 Singleton Instance ,您可以使用它来定义对象映射。

Dim config as IConfiguration = Kernel.Get(Of IConfiguration)
Config.CreateMap(Of Source, Destination)

所以后来我写了一个测试来检查 Mapper 静态类的不同之处。在下面的测试中,我比较了 IConfiguration IMappingEngine 的2个不同实例,并且测试通过了。

所以我试图找出当 Mapper 静态类做同样的事情时使用IoC和AutoMapper的目的,即每次都提供IConfiguration的单例实例。

    <TestMethod()>
    Public Sub Test()
       Dim c1 As IConfiguration = Mapper.Configuration
       Dim c2 As IConfiguration = Mapper.Configuration

       Dim e1 As IMappingEngine = Mapper.Engine
       Dim e2 As IMappingEngine = Mapper.Engine

       Assert.AreSame(c1, c2)
       Assert.AreSame(e1, e2)
   End Sub

1 个答案:

答案 0 :(得分:0)

如果您的组件包含配置为单例的映射,则可以确保配置为transient的组件通过注入映射组件来实现其依赖关系(映射)。

您不必通过任何其他方式初始化其他位置的映射。

如果你有瞬态组件,你可以确保映射初始化代码运行一次,因为该组件被配置为单例然后注入。

我自己并没有这样做(我的组件大多是单身人士),但这听起来不错。