【发布时间】:2013-04-10 22:00:33
【问题描述】:
我正在查看 Microsoft 的操作方法:Create a Basic Data Contract for a Class or Structure,但它给我留下了很多问题。
他们提供了这个非常简单的例子:
using System;
using System.Runtime.Serialization;
[DataContract]
public class Person
{
// This member is serialized.
[DataMember]
internal string FullName;
// This is serialized even though it is private.
[DataMember]
private int Age;
// This is not serialized because the DataMemberAttribute
// has not been applied.
private string MailingAddress;
// This is not serialized, but the property is.
private string telephoneNumberValue;
[DataMember]
public string TelephoneNumber
{
get { return telephoneNumberValue; }
set { telephoneNumberValue = value; }
}
}
就我而言,我还需要包含另一个名为 ADUser(Active Directory 用户)的自定义类对象。
我知道ADUser 必须用DataContractAttribute 标记,但我不知道具体该怎么做。
这里又是微软的课程,但这次添加了ADUser 字段:
using System;
using System.Runtime.Serialization;
[DataContract]
public class Person
{
// This member is serialized.
[DataMember]
internal string FullName;
// This is serialized even though it is private.
[DataMember]
private int Age;
// This is not serialized because the DataMemberAttribute
// has not been applied.
private string MailingAddress;
// This is not serialized, but the property is.
private string telephoneNumberValue;
[DataMember]
public string TelephoneNumber
{
get { return telephoneNumberValue; }
set { telephoneNumberValue = value; }
}
[DataMember]
public ADUser UserInfo { get; set; }
}
我不太了解我的ADUser 班级需要如何或做什么,但我确信private 的内容可以保持不变。
我需要如何修复这个 ADUser 类示例?
public class ADUser
{
private string first, last, loginID;
public ADUser() {
first = null;
last = null;
loginID = null;
}
private void getInfo() {
// code goes here
// which sets loginID;
}
public void SetName(string first, string last) {
this.first = first;
this.last = last;
getInfo();
}
public string LoginID { get { return loginID; } }
}
【问题讨论】:
-
您是否尝试将
DataMember放入AdUser中的每个字段并用DataContract标记ADUser? -
正如@outcoldman 所说,只需要为ADUser 做同样的事情。基本上,DataContact 中的每个 DataMember 都需要是可序列化的,这意味着,如果有一个类,它也需要是一个 DataContact。另外,需要确保类有一个不需要参数的构造函数
-
就这么简单?好的! :)
标签: c# wcf datacontractserializer datacontract