我正在为.NET Core Web API评估不同的对象 - 对象映射器。我的要求之一是使用.NET Core的内置依赖注入容器。我测试了Automapper,这是成功的,但我有兴趣尝试使用ExpressMapper。 http://www.expressmapper.org/要配置的示例非常稀疏。
我从Github页面看到它似乎已准备好.netcore。 https://github.com/fluentsprings/ExpressMapper
如何在startup.cs中配置ExpressMapper,以便我可以将DI转换为控制器,类似于Automapper?
如果某人有一个快速的startup.cs示例,ExpressMapper和.NET Core会很棒。 (另外,如果有人使用他们推荐的另一种具有.NET Core的竞争映射工具,这也会有所帮助。)
使用Automapper,我可以添加一个MappingProfile类,然后执行类似
的操作Startup.cs
private MapperConfiguration _mapperConfiguration { get; set; }
_mapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new MappingProfile());
});
ConfigureServices
services.AddSingleton<IMapper>(sp => _mapperConfiguration.CreateMapper());
控制器
public ValuesController(IMapper mapper)
{
_mapper = mapper;
}
答案 0 :(得分:3)
与Expressmapper相同,您可以使用Mapper静态类使用的IMappingServiceProvider
接口和MappingServiceProvider
实现。请看一下以下示例,这里是link,以便真实地看到它:
public class Program
{
public static void Main()
{
var container = new Container();
container.Register<IMappingServiceProvider, MappingServiceProvider>();
var mapper = container.GetInstance<IMappingServiceProvider>();
var result = mapper.Map<Test, TestResponse>(new Test{Name = "Just a test"});
Console.WriteLine("result is {0} type", result as TestResponse);
Console.WriteLine("result.Name = {0}", result.Name);
}
public class Test{
public string Name {get;set;}
}
public class TestResponse{
public string Name {get;set;}
}
}