Frage

Ich habe einen WCF-Dienst, und ich teile Typen mit einem Client in einer Baugruppe geteilt. Wenn der Kunde eine abgeleitete Klasse erstellen wird es möglich sein, den abgeleiteten Typen zu dem Dienst zu übergeben, damit ich die zusätzlichen Eigenschaften durch Reflexion lesen kann?

Ich habe versucht, aber da die Service-Themen mit KnownTypes mit weiß nicht, wie die abgeleiteten Typ deserialisiert.

[Serializable]
public abstract class Car : ICar
{........

// auf dem Client:

[Serializable]
public class MyCar : Car
{......

beim Passieren myCar auf Service erhält ich die Ausnahme über Knowntype beschweren, aber ich kann diese auf dem Server hinzufügen, da ich weiß, würde nicht, was der Kunde durch das Senden und ich mag zusätzliche Eigenschaften durch Reflexion behandeln.

Mögliche Client-Typen wie knowntypes zur Laufzeit?
registrieren Ist das vielleicht die Lösung? http://blogs.msdn.com/b/ Sowmy / Archiv / 2006/03/26 / 561188.aspx

War es hilfreich?

Lösung

Dies ist nicht möglich. Sowohl der Service und Client muss wissen, welche Arten werden in Nachrichten gesendet werden. Wenn Sie bekannten Typs verwenden wollen, müssen Sie auf den Dienst, den Bezug auf Elterntyp definieren.

Warum brauchen Sie zusätzliche Eigenschaften auf dem Server wissen?

Andere Tipps

Ich denke, es gibt einen Weg.

Ich erinnere mich vage, dass, wenn ich WCF studiert, ich Extension erfüllt, welche ein Mechanismus sein sollte, alles zu bekommen, die nicht die Serialisierung der Klasse entspricht. wenn Sie Extension zum Beispiel ermöglichen, und Sie sind in dieser Situation

//Server
public class GenericRQ
{
    public string GenericProperty {get;set;}
}


public Service GenericService
{
    Public void GenericMethod(GenericRQ RQ)
    {
    }

}

// client

Public class MoreSpecificRQ : GenericRQ
{
    public string SpecificProperty {get;set;}
}

Public void GenericMethod(GenericRQ RQ)
    {
    // the serializer adds automatically in RQ.ExtensionData everything that has come and that does not match the class GenericRQ.

    }

Auf wie Extension aktivieren Sie im Web

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