Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 用户设置对象的XML序列化_.net_Vb.net_Serialization_Xml Serialization_Settings - Fatal编程技术网

.net 用户设置对象的XML序列化

.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

我正在尝试将自定义对象保存为VB.net应用程序中的用户设置。此对象由一个列表(一对(字符串,对象))组成。Pair是一个自定义类,具有两个读/写属性(字符串和对象)

如果我将int、string、datetime等简单类型作为该对的第二个值,则保存设置时不会出现任何问题。但是,如果我尝试放置一些更复杂的内容,例如列表,那么在序列化过程中似乎会出现问题,并且我的设置不会保存

我的对中的字符串值序列化如下:

<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 {
}