インターフェイス メンバーにDataMemberAttributeを配置するとはどういう意味ですか? これは派生クラスにどのように影響しますか?
4612 次
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 に答える