属性:获取:设置:序列化为XML
Property: Get: Set: Serialize to XML
我有一个 class 定义在其 get 方法中自动递增 属性。我正在尝试将此对象序列化为 XML,但未打印自动递增的 属性。感谢任何帮助。
public class Program
{
public static void Main()
{
MyClass _myClass = new MyClass();
string transactionXML = string.Empty;
Console.WriteLine("Current ID: " + _myClass.ID);
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
System.IO.StringWriter _sw = new System.IO.StringWriter();
System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(_sw);
xmlSerializer.Serialize(writer, _myClass);
transactionXML = _sw.ToString();
Console.WriteLine("XML:\n" + transactionXML);
}
[Serializable]
public class MyClass
{
long last_id = 0;
public string ID{get { return System.Threading.Interlocked.Increment(ref last_id ).ToString("D6"); }}
}
}
当我尝试 运行 时,它 运行 没有错误,但没有在 XML 中打印 ID。
您需要使用 setter 扩展您的“MyClass”ID,如下所示:
[Serializable]
public class MyClass
{
long last_id = 0;
public string ID { get { return System.Threading.Interlocked.Increment(ref last_id).ToString("D6"); } set { } }
}
XMLSerializer
的限制 - 没有 setter 的属性无法序列化。
但是你可以使用DataContractSerializer
序列化私有setter属性-
[DataMember]
public string Id
{
get
{
return Guid.NewGuid().ToString();
}
private set {}
}
我有一个 class 定义在其 get 方法中自动递增 属性。我正在尝试将此对象序列化为 XML,但未打印自动递增的 属性。感谢任何帮助。
public class Program
{
public static void Main()
{
MyClass _myClass = new MyClass();
string transactionXML = string.Empty;
Console.WriteLine("Current ID: " + _myClass.ID);
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
System.IO.StringWriter _sw = new System.IO.StringWriter();
System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(_sw);
xmlSerializer.Serialize(writer, _myClass);
transactionXML = _sw.ToString();
Console.WriteLine("XML:\n" + transactionXML);
}
[Serializable]
public class MyClass
{
long last_id = 0;
public string ID{get { return System.Threading.Interlocked.Increment(ref last_id ).ToString("D6"); }}
}
}
当我尝试 运行 时,它 运行 没有错误,但没有在 XML 中打印 ID。
您需要使用 setter 扩展您的“MyClass”ID,如下所示:
[Serializable]
public class MyClass
{
long last_id = 0;
public string ID { get { return System.Threading.Interlocked.Increment(ref last_id).ToString("D6"); } set { } }
}
XMLSerializer
的限制 - 没有 setter 的属性无法序列化。
但是你可以使用DataContractSerializer
序列化私有setter属性-
[DataMember]
public string Id
{
get
{
return Guid.NewGuid().ToString();
}
private set {}
}