2011-08-17 15 views
4

場合は、次のとおりです。WCFの継承オブジェクトプロパティへのアクセス方法

[ServiceContract] 
public interface IInfo 
{ 
    [DataMember] 
    int Id{get;set;} 
} 

[DataContract] 
[KnownType(typeof(Legal))] 
public class Info 
{ 
    [DataMember] 
    public int Id { get; set; } 
} 

[DataContract] 
public class Legal : Info 
{ 
    [DataMember] 
    public string ManagerName { get; set; } 
} 

[ServiceContract] 
[ServiceKnownType(typeof(Legal))] 
public interface IMyService 
{ 
    [OperationContract] 
    int DoWork(Info dto); 
} 

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class MyService : IMyService 
{ 

    public int DoWork(Info dto) 
    { 
     string name; 
     if (dto is Legal) 
      name = (dto as Legal).ManagerName; 
     return dto.Id; 
    } 
} 

は、それが法的タイプとしてDTOを知っているし、子プロパティにアクセスすることは可能ですか?

私はdtoを保存したいのですが、私は情報の各子供に多くのサービスを提供したくありません。

入力パラメータがエラーをキャストし、動作しないよう、情報などの 基底クラスが機能しないなどIInfoなど インターフェイス、動作しないサービスにWSDLエラーをジェネリックを渡すと、子供の小道具は、 スタックアクセスすることはできませんオーバーフローがうまくいかない、これは私の2回目です。

+0

WCFHost-Toolで取得したエラーに関係なくサービスをホストしようとしましたか?いくつかの複雑なシナリオでは、このツールはあなたに「横たわっています」。たとえば、IISに展開すると、すべて正常に動作します。できるだけ早くあなたのサンプルを試してみます!乞うご期待。 – sprinter252

+0

あなたのサンプルを試してみてください。わたしにはできる。あなたのサンプルコードは動作していて、何か別のことをやろうとしませんか?あなたのためにうまくいかないサンプルを投稿できますか? – sprinter252

+0

これは私の正確なサンプルでした!私はすぐにそれを試してみるつもりだ、提案のためにtnx。メールアドレスは? –

答えて

1

jsonをMyServiceに渡しています。 "__type": "Legal:#Dto"を追加すると、MyServiceはdtoをLegalとして認識します。 then(Legalとしてのdto).ManagerNameの値は

です。

このソリューションは動作していますが、実際には__typeを渡すと便利な方法ではありません。私はあなたのより良い提案を感謝します。

関連する問題