Que signifie mettre DataMemberAtsortingbute sur un membre de l’interface?

Que signifie placer un DataMemberAtsortingbute sur un membre d’interface? Comment cela affecte-t-il les classes dérivées?

Comme indiqué dans la signature suivante, l’atsortingbut DataMember n’est pas héritable.

[AtsortingbuteUsageAtsortingbute(AtsortingbuteTargets.Property|AtsortingbuteTargets.Field, Inherited = false, AllowMultiple = false)] public sealed class DataMemberAtsortingbute : Atsortingbute 

Par conséquent, il est tout à fait logique de décorer les membres de l’interface avec cet atsortingbut, car vous devrez également décorer les membres des classes implémentées avec cet atsortingbut.

Dans mon cas, j’utilise ces atsortingbuts avec mes services WCF. Lorsque je crée une interface pour un service Web WCF, je le définit en définissant une interface de la manière suivante:

 Imports System.ServiceModel  Public Interface IClientContract  Function GetClientList() As IList(Of POCOClients) End Interface 

Comme vous pouvez le constater, le client de ce service recevra une classe POCOCLient. Ensuite, je dois décorer la classe POCOClient avec les atsortingbuts que vous demandez à la forme de cette manière afin de permettre à la classe d’être sérialisée correctement et d’envoyer via WCF.

   Public Class POCOAuthorizedkeys   Public Property Id As Integer   Public Property IdPackage As Integer   Public Property AuthorizedKey As Ssortingng   Public Property IdUnthrustedClient As Nullable(Of Integer) End Class 

L’atsortingbut [DataMember], lorsqu’il est appliqué à un membre d’un type, spécifie que le membre fait partie d’un contrat de données. Lorsque cet atsortingbut est appliqué explicitement à un champ ou à une propriété, il spécifie que la valeur du membre sera sérialisée par un object DataContractSerializer (extrait de l’ article ).