Frage

Ich habe eine Methode in einem WCF-Dienst, die einen komplexen Typ (myComplexResult) gibt, die als eines ihrer Mitglieder eine List (Of Common.myBaseClass) enthält. Ich mag diese Listenelemente halten, die auf verschiedene Weise vom Typ Foo.myClass1 und Bar.myClass2 sein können, die beide von Common.myBaseClass erben. Beachten Sie, dass alle diese Klassen in verschiedenen Baugruppen definiert sind.

Der Dienst führt diese Ausnahme:

  

Typ   'Foo.myClass1'   mit Datenvertragsnamen   'MyClass1: http: // MyNamespace / foo / '   ist nicht zu erwarten. Fügen Sie keine Typen   statisch auf die Liste der bekannten bekannt   Typen - zum Beispiel durch die Verwendung von   Knowntype Attribut oder durch   sie in die Liste der bekannten Typen Hinzufügen   bestanden DataContractSerializer.

Okay, so merke ich, dass ich brauche MyClass1 und MyClass2 als bekannte Typen von MyBaseClass zu erklären, so dass der DataContractSerializer weiß, was mit ihnen zu tun. Ich kann nicht die offensichtliche Sache tun und die MyBaseClass Klasse mit Knowntype dekorieren Attribute für MyClass1 und MyClass2, da dies bedeuten würde, Verweise auf die Foo und Bar Baugruppen hinzugefügt, die eine zirkuläre Abhängigkeit verursacht.

Ich habe gehofft, declaredTypes in meiner Config-Datei zu verwenden, und ich versuchte, diese:

<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>

Das ist nicht zu helfen schien, so habe ich versucht, ein Knowntype Attribut myComplexResult hinzuzufügen:

  <DataContract(name:="myComplexResult", [namespace]:="http://mynamespace/coo/")> _
    <KnownType(GetType(Foo.myClass1))> _
    Public Class myComplexResult
        <DataMember(name:="myList")> _
        Public myList As List(Of Common.myBaseClass)

Aber ich bin immer noch den gleichen Fehler. Hilfe! Was kann ich tun?

War es hilfreich?

Lösung

Meine Schuld. Ich habe wieder versucht, und beide der Lösungen, die ich oben tatsächlich funktionieren geschrieben. Ich denke, dies ist ein Fall einfach nicht den Dienstverweis auf meinem Testprojekt Aktualisierung vor der Durchführung des Tests - hoppla !!!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top