2011-08-04 14 views
3

WCFインターフェイスクラスのすべての操作規約に[ServiceKnownType(typeof(Document))]を使用しています。このKnownType.Insteadを使用しないようにしたいのですが、web.configのDeclaredTypesを使用してください。 Web.configファイルでDeclaredTypesを構成する方法についての助けを得ることができます。WCFで宣言された型の使用

答えて

3

構成に既知の型を追加するオプションは、サービスコントラクトではなくデータコントラクトにのみ適用されます。この場合

<configuration> 
    <system.runtime.serialization> 
    <dataContractSerializer> 
     <declaredTypes> 
     <add type="MyNamespace.DocumentBase, MyAssembly, Version=..."> 
      <knownType type="MyNamespace.Document, MyAssembly, Version=..."/> 
     </add> 
     </declaredTypes> 
    </dataContractSerializer> 
    </system.runtime.serialization> 
</configuration> 

Documentから派生したタイプは、常に同じ(とないSystem.Object)である場合は、次のようになりますこれ、(MSDNで詳細)設定オプションを使用してそれを行うことができますこのオプションをDataContractSerializerコンストラクタに渡すこともできます。これは、サービス全体に適用できるいくつかの動作を使用して行うことができます。 DataContractSerializerNetDataContractSerializerに置き換えるポストは、シリアライザを置き換えるのではなく、別のDataContractSerializerインスタンスを返すのではなく、渡された既知のタイプに常にtypeof(Document)を追加するのがよい出発点です。

関連する問題