C# XML序列化类型转换器

C# XML序列化类型转换器,c#,xml-serialization,C#,Xml Serialization,在Json中,我可以做到这一点: [JsonProperty("type")] [JsonConverter(typeof(MyTpeConverter))] public BoxType myType { get; set; } ..... public class BoxTypeEnumConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value,

在Json中,我可以做到这一点:

 [JsonProperty("type")]
 [JsonConverter(typeof(MyTpeConverter))]
 public BoxType myType { get; set; }


 .....
 public class BoxTypeEnumConverter : JsonConverter
 {
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
     ....
    }
 }
使用XML时也可以这样做吗

[XmlElement("isFolder")]
[XmlConvert()] // ???
public string IsFolder { get; set; }
我的Xml文件有一个示例

....
<isFolder>t</isFolder>
....
。。。。
T
....
我希望“t”是“真的”。

有两种方式: 简单方法:)

第二种方法是创建一个处理自定义转换的类:

public class BoolHolder : IXmlSerializable
{
    public bool Value { get; set }

    public System.Xml.Schema.XmlSchema GetSchema() {
        return null;
    }

    public void ReadXml(System.Xml.XmlReader reader) {
        string str = reader.ReadString();
        reader.ReadEndElement();

        switch (str) {
            case "t":
                this.Value = true;
    ...
    }
}
并将属性的定义替换为BoolHolder:

公用文件夹{get;set;}

有两种方式: 简单方法:)

第二种方法是创建一个处理自定义转换的类:

public class BoolHolder : IXmlSerializable
{
    public bool Value { get; set }

    public System.Xml.Schema.XmlSchema GetSchema() {
        return null;
    }

    public void ReadXml(System.Xml.XmlReader reader) {
        string str = reader.ReadString();
        reader.ReadEndElement();

        switch (str) {
            case "t":
                this.Value = true;
    ...
    }
}
并将属性的定义替换为BoolHolder:

公用文件夹{get;set;}