Domanda

:

Ho un servizio WCF e sto condividendo i tipi con un cliente in un condiviso assemblaggio. Se il cliente di creare una classe derivata sarà possibile passare indietro il tipo derivato al servizio in modo che possa leggere le proprietà aggiunte attraverso la riflessione?

ho provato, ma problemi con KnownTypes in quanto il servizio non so come per deserializzare il tipo derivato.

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

// sul client:

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

quando passa myCar al servizio ottengo l'eccezione lamentano KnownType ma non posso aggiungere questo sul server dal momento che non sapranno ciò che il cliente sarà l'invio tramite e voglio gestire le proprietà aggiuntive attraverso la riflessione.

possibile registrare tipi di client come knowntypes in fase di esecuzione?
È questa forse la soluzione? http://blogs.msdn.com/b/ sowmy / archive / 2006/03/26 / 561188.aspx

È stato utile?

Soluzione

Questo non è possibile. Sia il servizio e il client deve sapere quali tipi verrà inviato nei messaggi. Se si desidera utilizzare tipo noto è necessario definire che relazione al tipo di genitore sul servizio.

Perché avete bisogno di sapere proprietà aggiunte sul server?

Altri suggerimenti

Credo che ci sia un modo.

Mi ricordo vagamente che quando ho studiato WCF, ho incontrato ExtensionData che dovrebbe essere un meccanismo per ottenere tutto ciò che non corrisponde la serializzazione della classe. per esempio, se si attiva ExtensionData e ci si trova in questa situazione

//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;}
}

A

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

    }

su come abilitare ExtensionData di cercare facilmente sul web

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top