Question

J'ai un service WCF et je partage les types avec un client dans un ensemble partagé. Si le client crée une classe dérivée qu'il sera possible de passer de nouveau le type dérivé du service afin que je puisse lire les propriétés ajoutées par la réflexion?

J'ai essayé, mais avoir des problèmes avec KnownTypes puisque le service ne sais pas comment désérialiser le type dérivé.

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

// sur le client:

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

lors du passage au service maVoiture-je obtenir l'exception se plaindre knownType mais je ne peux pas ajouter ceci sur le serveur que je ne vais pas savoir ce que le client va envoyer à travers et je veux gérer des propriétés supplémentaires par la réflexion.

Possibilité d'enregistrer les types de clients comme knowntypes lors de l'exécution
Est-ce peut-être la solution? http://blogs.msdn.com/b/ Sowmy / archive / 2006/03/26 / 561188.aspx

Était-ce utile?

La solution

Ceci est impossible. Le service et le client doit savoir quels types seront envoyés dans les messages. Si vous souhaitez utiliser un type connu, vous devez définir cette relation type de parent sur le service.

Pourquoi avez-vous besoin de connaître les propriétés ajoutées sur le serveur?

Autres conseils

Je pense qu'il ya un moyen.

Je me souviens vaguement que quand j'ai étudié WCF, j'ai rencontré ExtensionData qui devrait être un mécanisme pour obtenir tout ce qui ne correspond pas à la sérialisation de la classe. par exemple, si vous activez ExtensionData et vous êtes dans cette 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.

    }

comment activer ExtensionData vous de rechercher facilement sur le web

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top