2015-02-26 41 views
2

事實:是否可以在C#中以相同類型自動投遞服務結果?

  • 我使用一個服務引用WCF服務
  • WCF服務的結果是結構上和邏輯上是相同的我喜歡的類型。

在我的項目類型:

namespace project.Data 
{ 
    using System; 

    public class TestPerson 
    { 
     public string Firstname { get; set; } 

     public string Lastname { get; set; } 

     public DateTime Birthday { get; set; } 
    } 
} 

從WCF服務的結果類型:

namespace externalServices.Data 
{ 
    using System; 

    public class TestPerson 
    { 
     public string Firstname { get; set; } 

     public string Lastname { get; set; } 

     public DateTime Birthday { get; set; } 
    } 
} 

問題:

  • 它可以轉換一個自動鍵入其他類型?

在那一刻我的解決辦法是這樣的:

// service call 
var serviceClient = new ServiceClient(); 
externalServices.Data.TestPerson externalTestPerson = serviceClient.GetTestPerson(); 
project.Data.TestPerson myTestPerson = new TestPerson 
{ 
    Birthday = externalTestPerson.Birthday, 
    Firstname = externalTestPerson.Firstname, 
    Lastname = externalTestPerson.Lastname 
}; 

我希望有一個更ellegant解決方案。

回答

2

不,即使所有字段和類名都按名稱和類型完全相同,也無法投射。

除此之外,你可以使用像AutoMapper這樣的工具來使複製變得容易。

Mapper.CreateMap<externalServices.Data.TestPerson, project.Data.TestPerson>(); 
Mapper.Map<externalServices.Data.TestPerson>(testPerson); // Copy all fields that have the same name and the same type 
+0

不錯的主意!但有了服務參考,它不適合我。 – cSteusloff

相關問題