What does it mean to put DataMemberAttribute on interface member?

这一生的挚爱 提交于 2019-12-21 09:29:24

问题


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


回答1:


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.




回答2:


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



回答3:


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)



来源:https://stackoverflow.com/questions/4791445/what-does-it-mean-to-put-datamemberattribute-on-interface-member

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!