Question

J'ai un DataContract qui a des attributs importants sur. Par exemple, dans le code suivant:

[DataMember]
[Description("My Description")]
public string Name { get; set; }

Je veux l'attribut Description à généré automatiquement sur le proxy client.

Y at-il une solution ou des solutions de contournement en plus double emploi massif?

Merci!

Était-ce utile?

La solution

Vous n'avez pas, pas vraiment. Rappelez-vous que vous n'êtes pas passer des instances d'objets, mais plutôt textuel des messages.

S'il est vraiment important, alors vous pouvez abandonner les classes proxy générées et partager la mise en œuvre des objets de données et des contrats à la place, mais cela est un tas plus de travail et bien sûr, vous êtes courir le risque du client et le serveur soit hors de la synchronisation.

Si vous voulez essayer ensuite mettre vos contrats et de l'interface d'opération dans un ensemble séparé, avec des modificateurs publics, essayez ce qui suit

Binding binding = new BasicHttpBinding(); // or which one you 
EndpointAddress endpoint = 
    new EndpointAddress("endpointUrl");
ChannelFactory<IServiceInterface> channelFactory = 
    new ChannelFactory<IServiceInterface>(binding, endpoint);

IServiceInterface client = channelFactory.CreateChannel();
MyDataType result = client.Operation(myOtherDataType);

((IClientChannel)client).Close();

Autres conseils

Vous auriez probablement creuser assez profondément dans la création de la description du service (et le fichier WSDL résultant) afin de passer ces attributs dans une telle forme que le client puisse détecter et de les recréer. A côté impossible, vraiment.

Plus: rappelez-vous que WCF est conçu pour être interopérable - ce qui devrait Java ou PHP client faire avec ces attributs, vraiment?

programmation orientée services est tout à fait une bête différente des systèmes à base d'objet « régulier » ou component. Tout ce que vous faites est de passer essentiellement autour des messages au format texte ou binaire. Cela ne limite certaines choses que vous pourriez être habitué à traiter avec des objets en .NET et des composants - il fonctionne différemment dans le monde SOA.

Marc

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