我有2個類,Class1應該映射到Class2。我使用AutoMapper進行測繪。我想測試我的配置映射器,爲此我使用AutoFixture。源類Class1的屬性類型爲IList <>,目標類Class2具有類似的屬性,但類型爲IEnumerable <>。爲了簡化測試準備,我使用AutoFixture(使用AutoMoqCustomization)來初始化源對象和目標對象。但在使用AutoFixture初始化IEnumerable類型的屬性後,AutoMapper無法映射屬性。AutoMapper和AutoFixture中的衝突
錯誤文本:
錯誤映射類型。
映射類型:1類 - >類2 ConsoleApplication1.Class1 - > ConsoleApplication1.Class2
類型地圖配置:1類 - >類2 ConsoleApplication1.Class1 - > ConsoleApplication1.Class2
房產:項目
任何人都可以幫助我配置AutoMapper或AutoFixture使映射工作?作爲一種解決方法,我可以將null分配給目標屬性,但我不想在每個測試中執行此操作。代碼
簡單的例子:
public class AutoMapperTests
{
public static void TestCollectionsProperty()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<ItemClass1, ItemClass2>();
cfg.CreateMap<Class1, Class2>();
});
var src = new Class1();
src.Items = new List<ItemClass1>()
{
new ItemClass1() { Text = "111" },
new ItemClass1() { Text = "222" }
};
var fixture = new Fixture();
var dst = fixture.Create<Class2>();
Mapper.Map(src, dst); //Error at this line of code
}
}
public class Class1
{
public IList<ItemClass1> Items { get; set; }
}
public class Class2
{
public IEnumerable<ItemClass2> Items { get; set; }
}
public class ItemClass1
{
public string Text { get; set; }
}
public class ItemClass2
{
public string Text { get; set; }
}
發佈的代碼無法編譯,因爲(AFICT)'Mapper.CreateMap'已被棄用並從AutoMapper中移除。請更新repro代碼,或發佈使用中的NuGet包列表,包括其版本號。 –
謝謝你的評論,我已經更新了示例 –