2011-03-10 24 views
0

我正在调用作为Web引用添加到项目中的.asmx Web服务。在哪里设置AutoMapper将asmx代理对象转换为域对象?

任何从webservice返回的对象都位于webservice的名称空间中。我想使用AutoMapper将这些对象映射到我的域对象。

如:

namespace My.Domain 
{ 
    public class Person 
    { 
     public string Name { get; set; } 
     public Pet Pet { get; set; } 
    } 

    public class Pet 
    { 
     public string Name { get; set; } 
    } 
} 

这工作...

My.WebService ws = new My.WebService(); 
My.WebService.Person person = ws.GetPersonById(1); 
My.WebService.Pet pet = person.Pet; 

但我想做到这一点...

using My.Domain; 

My.WebService ws = new My.WebService(); 
Person person = ws.GetPersonById(1); 
Pet pet = person.Pet; 

有没有什么地方我可以把AutoMapper到插入web服务,所以我可以做到这一点?我可以在哪里设置?或者还有其他一些方法我需要这样做吗?

回答

1

在AutoMapper要做到这一点最简单的方法是一样的东西......

var request = Mapper.Map<DomainObject, ServiceReferenceObject>(requestDomainObject); 
var result = ws.DoSomething(request); 
var resultDomainObject = Mapper.Map<ServiceReferenceObject, DomainObject>(result); 

是的,你每次需要转换或从服务的参考时间的额外线,但在AutoMapper至少它只是一条线,所有的混乱都隐藏在映射器中,所以你不必编写和维护它。