WCF Client hat Probleme beim Erkennen von ServiceKnownTypes?

Wie kann ich dem WCF-Dienst mitteilen, welche KnownTypes verwendet werden sollen, wenn Daten an den Client zurückgegeben werden?

Ich weiß, ich kann das @ verwend[ServiceKnownType] -Attribut, mit dem der Dienstaufruf von einem WCF-Testserver ordnungsgemäß ausgeführt wird, der Client schlägt jedoch weiterhin fehl. Vermisse ich hier etwas?

[OperationContract]
[ServiceKnownType(typeof(SubClassA))]
[ServiceKnownType(typeof(SubClassB))]
BaseClassZ GetObject();

Fehlermeldung vom Client ist:

{"Element 'http://schemas.datacontract.org/2004/07/BaseClassZ' enthält Daten von einem Typ, der dem Namen 'http://schemas.datacontract.org/2004/07/SubClassA' zugeordnet ist Deserializer kennt keinen Typ, der diesem Namen zugeordnet ist. Verwenden Sie einen DataContractResolver oder fügen Sie den Typ 'SubClassA' zur Liste der bekannten Typen hinzu, z an DataContractSerializer übergebene Typen. "}

Das Serialisieren / Deserialisieren des Objekts auf dem WCF-Server mit einem DataContractSerializer und einer Liste von KnownTypes funktioniert einwandfrei.

AKTUALISIEREN Es scheint, dass ich den Client dazu bringen kann, das Objekt richtig zu lesen, wenn ich der Basisklasse KnownType-Attribute hinzufüge, aber ich suche immer noch nach einer Möglichkeit, dies zu umgehen, da die Basisklasse für viele Elemente verwendet wird und ich nicht ' Ich möchte nicht jedes Mal, wenn ich ein neues Element hinzufüge, die KnownType-Attribute für die Basisklasse ändern müssen.

[DataContract]
[KnownType(typeof(SubClassA))]
[KnownType(typeof(SubClassB))]
public class BaseClassZ 
{
    ...
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage