8

インターフェイス メンバーにDataMemberAttributeを配置するとはどういう意味ですか? これは派生クラスにどのように影響しますか?

4

3 に答える 3

10

次の署名に示すように、DataMember 属性は継承できません。

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

したがって、実装クラスのメンバーもこの属性で装飾する必要があるため、この属性でインターフェイス メンバーを装飾することはほとんど意味がありません。

于 2011-01-25T09:49:05.213 に答える
1

私の場合、この属性をWCFサービスで使用します。WCF Webサービスのインターフェイスを作成するときは、次のようにインターフェイスを定義します。

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

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

End Interface

ご覧のとおり、このサービスのクライアントはPOCOCLientクラスを受け取ります。次に、POCOClientクラスをこのようにフォームに要求している属性で装飾して、クラスを適切にシリアル化し、VíaWCFを送信できるようにする必要があります。

<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
于 2011-01-25T08:56:19.407 に答える
-1

[DataMember] 属性を型のメンバーに適用すると、そのメンバーがデータ コントラクトの一部であることを指定します。この属性がフィールドまたはプロパティに明示的に適用されると、メンバー値が DataContractSerializer オブジェクト ( Articleから取得)によってシリアル化されることが指定されます。

于 2011-01-25T08:54:11.350 に答える