2017-04-13 206 views
0

我有像这样AutoMapperMappingException获取属性名称

public interface IFoo 
{ 
    byte[] Content{get; set;} 
} 

public class FooDTO : IFoo 
{ 
    byte[] Content {get; set;} 
} 

public FooAdapter : IFoo 
{ 
    Picture _picture; 
    public FooAdapter(Picture picture) 
    { 
     this._picture = picture; 
    } 

    public byte[] Content => this._picture.GetContent(); 
} 

自定义适配器图案。然后我有一个扩展的方法来我的实体转化为DTO像之间,

public static FooDTO ToDTO(this IFoo getter) 
{ 
    return AutoMapperExtensions.Map<IFoo, FooDTO >(getter);    
} 

该适配器适配器相同的接口IFoo,偶尔我得到AutoMapperMappingExceptions

映射类型: FooAdapter - >字节[] MyNamespace.FooAdapter - > System.Byte []

目标路径: FooDTO.Content

Source值:MyNamespace.FooAdapter

所有这些信息是很好的但我怎样才能得到引发错误的属性的属性名称?

+0

只是一个简单的问题,你为什么试图映射已经有一个getter属性的值(即返回一个值)? – DOMZE

+0

@DOMZE此适配器模式有多个好处。 1.通过这样做,您不必在您的DTO和您的实体之间拥有相同的名称。 2.这提供了一个映射之间的附加层,所以你可以添加逻辑,例如你可能不想映射你的Id,因为它们是从服务器设置的,如果有人修改了你的dto的Id等,可能会导致一个错误。 –

+0

我的错,我误读了目的地不是你的实体;-) – DOMZE

回答

1

因为任何人想知道您可以通过错误上下文访问成员名称。

catch(AutoMapperMappingException mappingException) 
{ 
    BuildNewError(mappingException.Context.MemberName); 
}