ExpressMapper,.NET Core和依赖注入

时间:2017-01-11 14:32:15

标签: .net-core express-mapper

我正在为.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;
    }

1 个答案:

答案 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;}
    }
}