2011-03-10 21 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至少它只是一條線,所有的混亂都隱藏在映射器中,所以你不必編寫和維護它。