.net 用户设置对象的XML序列化
我正在尝试将自定义对象保存为VB.net应用程序中的用户设置。此对象由一个列表(一对(字符串,对象))组成。Pair是一个自定义类,具有两个读/写属性(字符串和对象) 如果我将int、string、datetime等简单类型作为该对的第二个值,则保存设置时不会出现任何问题。但是,如果我尝试放置一些更复杂的内容,例如列表,那么在序列化过程中似乎会出现问题,并且我的设置不会保存 我的对中的字符串值序列化如下:.net 用户设置对象的XML序列化,.net,vb.net,serialization,xml-serialization,settings,.net,Vb.net,Serialization,Xml Serialization,Settings,我正在尝试将自定义对象保存为VB.net应用程序中的用户设置。此对象由一个列表(一对(字符串,对象))组成。Pair是一个自定义类,具有两个读/写属性(字符串和对象) 如果我将int、string、datetime等简单类型作为该对的第二个值,则保存设置时不会出现任何问题。但是,如果我尝试放置一些更复杂的内容,例如列表,那么在序列化过程中似乎会出现问题,并且我的设置不会保存 我的对中的字符串值序列化如下: <value1>Priority_1</value1> Prio
<value1>Priority_1</value1>
Priority\u 1
对象值使用特殊属性序列化:
<value2 xsi:type="xsd:int">2</value2>
2
似乎Object类型的值以不同的方式序列化,以“记住”对象的真实类型。为什么不能对更复杂的类型(如List(Of t))执行相同的操作
你能想出一些简单的解决办法吗?任何关于XML序列化的提示都可以帮助我:-)它可以对存储在对象中的int执行此操作,因为它知道如何序列化int。它不知道如何序列化复杂类型 除非您使用来告诉它哪些类型可能出现在该对象中。从示例中可以看出:
[WebMethod()]
[XmlInclude(typeof(Car)), XmlInclude(typeof(Bike))]
public Vehicle Vehicle(string licenseNumber) {
if (licenseNumber == "0") {
Vehicle v = new Car();
v.licenseNumber = licenseNumber;
return v;
}
else if (licenseNumber == "1") {
Vehicle v = new Bike();
v.licenseNumber = licenseNumber;
return v;
}
else {
return null;
}
}
在哪里
我在我的序列化类中添加了XmlInclude属性,现在可以工作了。谢谢!!
[XmlRoot("NewVehicle")]
public abstract class Vehicle {
public string licenseNumber;
public DateTime make;
}
public class Car : Vehicle {
}
public class Bike : Vehicle {
}