在接口成员上放置 DataMemberAttribute 是什么意思?

8

1
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute.aspx - CD..
3个回答

10

如下所示的签名中,DataMember属性不可继承。

[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field, Inherited = false, 
    AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
因此,在接口成员上使用此属性几乎没有意义,因为您还需要在实现类的成员上使用此属性。

1
在我的情况下,我使用这些属性来处理我的WCF服务。当我为WCF Web服务创建接口时,我会按照以下方式定义一个接口:
Imports System.ServiceModel
<ServiceContract()>
Public Interface IClientContract

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

End Interface

正如您所看到的,该服务的客户端将收到一个 POCOClient 类。然后,我需要使用您要求的属性修饰 POCOClient 类,以便让该类正确序列化并通过 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

-1

[DataMember] 属性,当应用于类型的成员时,指定该成员是数据契约的一部分。当该属性显式地应用于字段或属性时,它指定该成员值将由 DataContractSerializer 对象序列化(参见文章)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接