我为Automapper找到的大多数示例都使用静态 Mapper 对象来管理类型映射。对于我的项目,我需要注入一个 IMapperEngine 作为使用 StructureMap 的对象构造的一部分,以便我们可以在单元测试中模拟映射器,因此我们不能使用静态映射器。我还需要支持配置 AutoMapper Profiles。
我的问题是如何配置 StructureMap 注册表,以便在构造 MyService 实例时它可以提供 IMappingEngine 实例。
这是服务构造函数签名:
public MyService(IMappingEngine mapper, IMyRepository myRepository, ILogger logger)
这是 StructureMap 注册表
public class MyRegistry : StructureMap.Configuration.DSL.Registry
{
public MyRegistry()
{
For<IMyRepository>().Use<MyRepository>();
For<ILogger>().Use<Logger>();
//what to do for IMappingEngine?
}
}
以及我要加载的配置文件
public class MyAutoMapperProfile : AutoMapper.Profile
{
protected override void Configure()
{
this.CreateMap<MyModel, MyDTO>();
}
}