2014-09-25 127 views
0

我使用Xamarin中的C#ServiceStack PCL客戶端嘗試將來自遠程服務的響應DTO映射到我的客戶端的域數據模型。該服務很好,我能夠成功獲得DTO。但是,似乎無論我製作DTO或Domain Model的方法多麼簡單,當我調用ConvertTo或PopulateWith以將該DTO轉換爲本地域模型時,我仍然會遇到ArgumentException。所以,我已經簡化了我的測試到一個非常簡單的測試,但仍然失敗。這裏是我的數據對象:ServiceStack ArgumentException將Dto映射到域模型

public class TestDto 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

public class TestModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

轉換通話也很簡單:

var testDto = new TestDto() {FirstName = "First", LastName = "Last"}; 
var testModel = testDto.ConvertTo<TestModel>(); 

當我打電話的ConvertTo,我得到System.ArgumentException以下消息:

方法在類型'Test.Core.Models.TestModel'上聲明的'Void set_FirstName(System.String)'不能用'System.String'類型的實例調用

調用var testModel = new TestModel().PopulateWith(testDto);導致相同的例外。因此,將屬性的數據類型從字符串更改爲int,布爾等等。

我已經遍尋搜索,感覺就像我正按照ServiceStack,他們的例子所做的一樣,我在Stack Overflow上找到的所有東西。見鏈接在這裏:

(注意的ConvertTo原名TranslateTo在舊版本ServiceStack)

因此,事實上,我得到這個異常讓我覺得我錯過了我的項目設置非常基本的東西,或者我錯過了一個步驟我不知何故需要配置我的對象或ServiceStack來啓用轉換。我知道我可以使用Automapper,但是當ServiceStack已經聲明有內置的功能時,我寧願不必拉入另一個庫。但是,我不確定此時該做什麼。任何想法可能導致這個或我應該看的建議?

+0

我會推薦使用automapper這是一個更強大的impl – 2014-09-25 17:10:49

+0

你是哪個平臺得到這個錯誤? – mythz 2014-09-25 19:25:42

+0

ServiceStack客戶端代碼本身位於Xamarin PCL中。到目前爲止,我的測試僅在Android上進行。 – thedigitalsean 2014-09-25 19:51:23

回答