2011-07-09 3 views
0

私はWCFの初心者です。私は、REST出力の基本インターフェースからプロパティを取得できるかどうか疑問に思っていました。JSONのWCFでのインターフェース分離

次の構造を考慮してください。製品には会場ではなくIVenueViewが含まれています。 Venueを持つことは可能ですか?Product JSONレスポンスにありますか?

[DataContract] 
public class Product { 
     [DataMember] 
     public Guid? Id { get; set; } 
     [DataMember] 
     public string Name { get; set; } 
     [DataMember] 
     public IVenueView Venue { get; set; } 
} 

public interface IVenueView { 
     [DataMember] 
     Guid? Id { get; set; } 
} 

[DataContract] 
public class Venue : IVenueView 
{ 
     [DataMember] 
     public Guid? Id { get; set; } 
     [DataMember] 
     public string Name { get; set; } 
} 

答えて

0

データ契約はすべてについてデータある - インターフェイスは、振る舞いを定義するので、彼らは本当によく混同しないでください。シリアライザがVenue型(IVenueViewについてのみ知っている)について「認識」していないため、製品のインスタンスをシリアル化/デシリアライズすることができないため、おそらく動作していないデータコントラクトは役に立ちます。

0

シリアライズとデシリアライズがないインタフェースを備えた実装(実際のデータ)で動作するので、ありません、それはできません。また、純粋なシリアル化のために、あなたのようなものを使用する必要があります。これは動作しません

[DataContract] 
[KnownType(typeof(Venue))] 
public class Product 
{ 
    [DataMember] 
    public Guid? Id { get; set; } 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public IVenueView Venue { get; set; } 
} 
+0

を**会場* _svcutil.exe_を使用している場合、クライアントの*オブジェクト**タイプのプロパティが存在します。 –