2016-07-05 3 views
1

API mehodを消費していますが、レスポンスを返すのはProduct型で、以下はレスポンスクラス構造体です。レスポンスオブジェクトのマッピング(C#)

Public class Product  
{  
     public int Id;  
     public string Name;  
     public IList<Product> MasterProduct { get; set; }  
} 

API結果には、IListとともに製品属性が含まれています。このAPIはWindowsクライアントで直接使用することはできないため、このAPIを使用するラッパーWeb APIがあります。ローカルAPIではこれを類似のProductクラスとして定義しています。私が直面している問題は、外部APIのアトリビュートをローカルにマップしようとするときです。以下は私がやろうとしていることです。

response = Response.Result.Select(x => new Product  
{  
Id=x.Id,  
Name=x.Name  
MasterProduct = x.MasterProduct.Cast<MasterProduct>().ToList()//tried below 
}).ToList(); 

が、それはようなエラーで失敗 - 「App.DataContracts.Product」

Masterproductは.Iは疑問に思って階層データで構成されて入力するタイプ「Api.Models.Product」のオブジェクトをキャストすることができません私が取っているアプローチが正しいか、何らかの方法で行う必要がある場合。ご意見やご協力をいただければ幸いです。

ウェブを検索すると、私は、セルパレメソッドがMicrosoft.Its.Dataを使用して解析するために呼び出されていますが、これは私の場合のようにList(Hierarchical)がある単一オブジェクトでした。

誰かがlinke/sampelを指し示すことができれば、それを実現することができます。

答えて

0

シリアライズ/デシリアライズを試行します。以下はコード おそらくシリアル化/逆シリアル化をしようとしています。

if (response.Result != null)  
{  

var serializedResponse = JsonConvert.SerializeObject(Response.Result, Formatting.Indented);  
response = JsonConvert.DeserializeObject<List<Product>>(serializedResponse);  

}).ToList();  
return response; 
+0

を継承しても同じことを達成しました。 –

関連する問題