如何限制属性类型Guid的序列化?

时间:2017-12-05 13:09:31

标签: c# serialization xml-serialization

    public class Pet
    {
      // The default value for the Animal field is "Dog". 
      [DefaultValue(0)]
      public int testinteger { get; set; }

      [DefaultValue (00000000 - 0000 - 0000 - 0000 - 000000000000)]
      public Guid testbool { get; set; }
    }

    public class Run
   {
    public static void Main()
    {
        Run test = new Run();

        test.SerializeObject("OverrideDefaultValue.xml");
    }

    public void SerializeObject(string filename)
    {
        XmlSerializer mySerializer = new XmlSerializer(typeof(Pet));
        TextWriter writer = new StreamWriter(filename);
        Pet myPet = new Pet();
        myPet.testinteger = 10;
        mySerializer.Serialize(writer, myPet);
        writer.Close();
    }
  } 

这里我使用Id属性进行序列化。我使用了属性默认值。但序列化不限于Id属性。

2 个答案:

答案 0 :(得分:0)

如果属性不起作用,您可以将属性标记为内部属性(仅公共属性为序列化)。

尝试检查是否设置了正确的属性,在属性上方设置XML属性,以便不对该属性进行序列化。     [XmlIgnore]    要么     [非序列化]

答案 1 :(得分:0)

这因序列化程序而异。由于您使用的是Datatable.Importsheet "C:\Temp\test.xlsx",1,1,因此添加XmlSerializer是基于属性的方式。

但您也可以添加:

[XmlIgnore]

(这适用于条件序列化,其中有时想要包含值;模式为public bool ShouldSerializetestbool() => false;

一个更有趣的例子可能是:

public bool ShouldSerialize{PropertyName}()