在我的c#wpf dekstop app中使用automapper。
我有这两个型号:
public class A
{
public string Field1 {get; set;}
public string Field2 {get; set;}
}
public class B
{
public string Field1 {get; set;}
public string Field2 {get; set;}
}
我通过db查询填充来创建A类集合,所以:
list<A> collectionA = DB.GetQueryResults();
我现在想转移&#39;使用AutoMapper将此集合添加到B类..
var configJobProfile = new MapperConfiguration(cfg => cfg.CreateMap<A, B>());
var mapperJobProfile = configJobProfile.CreateMapper();
collectionB = mapperJobProfile.Map<B>(collectionA);
但是我得到了一个映射错误,其中snot告诉了我很多。所以我假设这种方法是错误的?
我该怎么做?
由于
答案 0 :(得分:2)
您已经设置了A - &gt;的映射。 B,但您尝试执行的地图是一个列表为As - &gt; B列表。
为列表设置映射,并且应该使用该技巧,即
var configJobProfile = new MapperConfiguration(cfg => cfg.CreateMap<List<A>, List<B>>());
var mapperJobProfile = configJobProfile.CreateMapper();
List<B> collectionB = mapperJobProfile.Map<List<B>>(collectionA);
答案 1 :(得分:0)
using System;
using AutoMapper;
public class Foo
{
public string A { get; set; }
public int B { get; set; }
}
public class Bar
{
public string A { get; set; }
public int B { get; set; }
}
public class Program
{
public static void Main()
{
Mapper.CreateMap<Foo,Bar>();
var foo = new Foo { A="test", B=100500 };
var bar = Mapper.Map<Bar>(foo);
Console.WriteLine("foo type is {0}", foo.GetType());
Console.WriteLine("bar type is {0}", bar.GetType());
Console.WriteLine("foo.A={0} foo.B={1}", foo.A, foo.B);
Console.WriteLine("bar.A={0} bar.B={1}", bar.A, bar.B);
}
}
以下是Tutorial
的链接关于@Romi Petrelis Automapper says Mapper.Map is obsolete, global mappings?
的诽谤警告检查答案