Map readonly fields with Automapper
I have two identical classes in different namespaces:
namespace ClassLibrary1
class Class1
{
public readonly int field1;
public Class1(int value) { field1 = value; }
}
And the same class definition in namespace ClassLibrary2
.
When I try to use AutoMapper, I get this exception:
Expression must be writeable Parameter name: left
This is the code of AutoMapper:
Mapper.CreateMap<ClassLibrary1.Class1, ClassLibrary2.Class1>();
var result = Mapper.Map<ClassLibrary2.Class1>(class1);
But if I try this AutoMapper Exclude Fields it doesn't work, using this:
Mapper.CreateMap<ClassLibrary1.Class1, ClassLibrary2.Class1>()
.ForMember(a => a.field1, a => a.Ignore());
For sure it works to change it to a property with public get and private set (like in Automapper ignore readonly properties), but I want to prevent a future developer of setting the value after constructor.
Is there any way of solving this using AutoMapper?
如果您想在构造函数中设置属性,请使用.ConstructUsing
,然后忽略该字段:
Mapper.CreateMap<ClassLibrary1.Class1, ClassLibrary2.Class1>()
.ConstructUsing(cls1 => new ClassLibrary2.Class1(cls1.field1))
.ForMember(a => a.field1, a => a.Ignore());
链接地址: http://www.djcxy.com/p/37388.html
上一篇: 使用AutoMapper进行嵌套对象映射
下一篇: 使用Automapper映射只读字段