2009-06-11 5 views
2

複合型(myComplexResult)を返すWCFサービスに、List(Of Common.myBaseClass)というメンバーを1つ含むメソッドがあります。このリストには、Common.myBaseClassを継承したFoo.myClass1型とBar.myClass2型のいろいろなアイテムを保持する必要があります。これらのクラスはすべて、異なるアセンブリで定義されています。異なるアセンブリ内のデータコントラクトに既知の型を宣言する

タイプ 'Foo.myClass1' データコントラクト名を持つ 'myClass1:http://mynamespace/foo/は' が期待されていない

サービスは、この例外がスローされます。知ら タイプのリストに静的に既知の任意のタイプではない を追加 - たとえば、DataContractSerializerに渡される既知のタイプ のリストに追加する KnownTypeAttribute属性を使用して、または で。

私は、myClass1とmyClass2を既知のタイプのmyBaseClassとして宣言して、DataContractSerializerがそれらと何をするべきかを知る必要があることを認識しています。私は明らかなことはできませんし、myClass1とmyClass2のKnownType属性を持つmyBaseClassクラスを飾ることはできません。これは、循環依存を引き起こすFooとBarアセンブリへの参照を追加することを意味するためです。

私は私の設定ファイルにdeclaredTypesを使用するように期待していたと私はこれを試してみました:

<DataContract(name:="myComplexResult", [namespace]:="http://mynamespace/coo/")> _ 
    <KnownType(GetType(Foo.myClass1))> _ 
    Public Class myComplexResult 
     <DataMember(name:="myList")> _ 
     Public myList As List(Of Common.myBaseClass) 
:助けているように見えるので、私はmyComplexResultにKnownType属性を追加しようとしましたしませんでした

<system.runtime.serialization > 
    <dataContractSerializer > 
     <declaredTypes > 
      <add type ="Common.myBaseClass, Common"> 
       <knownType type ="Foo.myClass1, Foo" /> 
       <knownType type ="Bar.myClass2, Bar" /> 
      </add> 
     </declaredTypes> 
    </dataContractSerializer> 
</system.runtime.serialization> 

しかし、私はまだ同じエラーが発生しています。助けて!私は何をしますか?

答えて

3

私のせいです。私は再試行して、上に掲載したソリューションの両方が実際に動作します。これはテストを実行する前に私のテストプロジェクトでサービス参照を単に更新しないケースだと思います。

関連する問題