C# 如何使用AutoMapper忽略目标对象属性
我发现了AutoMapper的一个bug,或者我需要覆盖的一些基于约定的行为。下面的代码复制了该问题。在下面的场景中,如何防止AutoMapper尝试写入C# 如何使用AutoMapper忽略目标对象属性,c#,.net,automapper,C#,.net,Automapper,我发现了AutoMapper的一个bug,或者我需要覆盖的一些基于约定的行为。下面的代码复制了该问题。在下面的场景中,如何防止AutoMapper尝试写入FooType属性 [Test] public void FooTypeShouldNotBeAltered() { AutoMapper.Mapper.CreateMap(typeof (TypeB), typeof (TypeA)) .ForMember("Foo", opt
FooType
属性
[Test]
public void FooTypeShouldNotBeAltered()
{
AutoMapper.Mapper.CreateMap(typeof (TypeB), typeof (TypeA))
.ForMember("Foo", opt => opt.MapFrom("Foo"));
var typeA = new TypeA { FooType = "foo" };
var typeB = new TypeB { Foo = "bar" };
AutoMapper.Mapper.Map(typeB, typeA, typeof (TypeB), typeof (TypeA));
Assert.AreEqual("foo", typeA.FooType);
}
public class TypeA
{
public string Foo { get; set; }
public string FooType { get; set; }
}
public class TypeB
{
public string Foo { get; set; }
}
以下是测试的输出:
Expected string length 3 but was 13. Strings differ at index 0.
Expected: "foo"
But was: "System.String"
-----------^
(值得一提的是,我很清楚(尽管这段代码不一定完全证明了这一点),AutoMapper正在将FooType
属性的值设置为Foo
属性的typename。)
目前,我正在寻找一种不使用基于泛型的重载或自定义解析器来阻止这种情况发生的方法,我需要使用
Map(source,dest,sourceType,destType)
重载来执行实际的映射。关于这个问题有很多答案。请参阅:因此正确地将其显示为相关,但我的选项不包括“UseDestinationValue”。我猜我必须编写一个自定义的IValueResolver或使用其中一个解析器。。。但是哪一个呢?是的,我坐在电脑前太久了,在源和目标之间来回映射。。。。谢谢