What does it mean to put DataMemberAttribute on interface member?
Asked Answered
E

3

8

What does it mean to put a DataMemberAttribute on an interface member? How does this affect derived classes?

Excitability answered 25/1, 2011 at 8:48 Comment(1)
msdn.microsoft.com/en-us/library/…Merlon
S
10

As shown in the following signature, the DataMember attribute is not inheritable

[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field, Inherited = false, 
    AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute

Therefore, it makes very little sense to decorate interface members with this attribute as you will have to decorate the implementing classes' members with this attribute too.

Sealskin answered 25/1, 2011 at 9:49 Comment(0)
O
1

In my case, I use this attributes with my WCF services. When I make an interface for a WCF Webservice I do it defining an interface in this way:

Imports System.ServiceModel
<ServiceContract()>
Public Interface IClientContract

    <OperationContract()>
    Function GetClientList() As IList(Of POCOClients)

End Interface

As you can see, the clien of this service will receive a POCOCLient class. Then I need to decorate the POCOClient class with the attributes you're asking form in this way in order to let the class to be serialized properly and send vía WCF.

<DataContract()>
<MetadataType(GetType(POCOAuthorizedkeys.POCOAuthorizedkeysMetaData))>
Public Class POCOAuthorizedkeys

    <DataMember()>
    <DisplayName("Id")>
    Public Property Id As Integer
    <DataMember()>
    <DisplayName("IdPackage")>
    Public Property IdPackage As Integer
    <DataMember()>
    <DisplayName("AuthorizedKey")>
    Public Property AuthorizedKey As String
    <DataMember()>
    <DisplayName("IdUnthrustedClient")>
    Public Property IdUnthrustedClient As Nullable(Of Integer)

 End Class
Oblast answered 25/1, 2011 at 8:56 Comment(0)
S
-1

The [DataMember] attribute, when applied to a member of a type, specifies that the member is part of a data contract. When this attribute is applied to a field or a property explicitly, it specifies that the member value will be serialized by an DataContractSerializer object (taken from Article)

Species answered 25/1, 2011 at 8:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.