2012-04-27 12 views
0

私は私の名前空間のBaseModelChildModelを持っています。私はDomainServiceで両方を返す操作をしていて、「KnownTypeAttributeを基本クラスに適用する」という例外が発生していました。私は適用した、それは働いた。ドメインサービスから派生型を返さないときに、なぜ 'KnownTypeAttribute'が必要なのですか?

しかし、私は、その後も私はBaseModelにこの属性を適用するためにバインドされています、私のDomainServiceにDerivedTypeを返す任意の操作を公開していない場合は、そうでない場合、私は例外を取得。

この出来事である理由誰が説明することはできますか?

public class MyService: DomainServiceBase 
{ 
    public BaseModel Get() 
    { 
     return new BaseModel(); 
    } 
} 

答えて

0

WCFは、派生型を使用してメッセージを取得する場合に発生します。この場合、既知のtypes属性を使用していないため、WCFはこの子ドメインタイプを見つける場所を認識せず、例外をスローします。

+0

しかし、私は、露光または「のDomainService」クラスのメソッドのいずれかから「ChildType」オブジェクトを返すわけではありません。したがって、WCFがオブジェクトの "ChildType"をシリアライズするというメッセージを受け取る方法はありません。 – teenup

+0

サービスを開始するとき、または何らかのメッセージを受け取ったときに、いつ例外が発生しますか?どんなメッセージでも起こりますか?私の推測では、クライアントが子タイプを送信することです。それは基底型から継承しているので、それは正当です –

+0

いいえ、私はBaseTypeだけを返しています。派生型ではありません。私はそれらの両方が返されていたが、ちょうどテストのために、私はDerivedTypeを返すメソッドを除去し、まだ私はそれを正しく動作させるには、BaseTypeの属性を維持しなければなりませんでした。 – teenup

関連する問題