C# &引用;使用;嵌入式类型中属性的类型配置
考虑我上下传递的这3种简化示例类型(实际上我只在DomainObject和WrapperClass之间自动映射): DomainObject是我的大多数应用程序所处理的,而Dalenty是我的数据访问层在与DB打交道时所处理的。注意(在本例中)有2个计算值不会持久化,而是从外部计算的(本例中,无论如何计算)。因此,我宁愿不把他们包括在我的Dalenty中 对于向上映射(src==dalenty,dest==DomainObject),我想告诉Automapper,对于DomainObject中的任何字段,它都不知道如何填充,“在这个复杂属性中查找名称匹配的属性”。据我所知,现在,我需要在创建映射时通过MapFrom手动显式指定所有属性。将是一个实时节省器(并且不容易出错),能够指定一种“使用”语句来映射 我想你可以称之为“通过暗示投射”:-)C# &引用;使用;嵌入式类型中属性的类型配置,c#,.net,automapper,C#,.net,Automapper,考虑我上下传递的这3种简化示例类型(实际上我只在DomainObject和WrapperClass之间自动映射): DomainObject是我的大多数应用程序所处理的,而Dalenty是我的数据访问层在与DB打交道时所处理的。注意(在本例中)有2个计算值不会持久化,而是从外部计算的(本例中,无论如何计算)。因此,我宁愿不把他们包括在我的Dalenty中 对于向上映射(src==dalenty,dest==DomainObject),我想告诉Automapper,对于DomainObject中的
这在当前是可能的吗?我将把计算属性的计算移到它自己的类中。然后可以使用依赖项注入,并让计算属性调用注入的类来填充它们自己。汽车制造商不应该知道这些。DO应了解全面运行所需的内容,或者,除此之外,其工厂应了解 这也会增加类的可测试性 无论如何,如果您仍然想走这条路,您可以将一个函数传递给Automapper的映射方法 比如:
Mapper.CreateMap<DAL, DO>()
.ForMember(m => m.CalcProp,
opt => opt.MapFrom(src =>
{ anon function that calls calculating code, passing src } ));
Mapper.CreateMap()
.ForMember(m=>m.CalcProp,
opt=>opt.MapFrom(src=>
{anon函数,调用计算代码,传递src});
Mapper.CreateMap<DAL, DO>()
.ForMember(m => m.CalcProp,
opt => opt.MapFrom(src =>
{ anon function that calls calculating code, passing src } ));