Flo*_*erl 1 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, JsonSerializer serializer)
{
....
}
}
Run Code Online (Sandbox Code Playgroud)
使用XML时也可能吗?
[XmlElement("isFolder")]
[XmlConvert()] // ???
public string IsFolder { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的Xml文件有例如
....
<isFolder>t</isFolder>
....
Run Code Online (Sandbox Code Playgroud)
我希望“ t”为“ true”。
小智 5
威胁有两种方式:简单方式::)
[XmlElement("isFolder")]
public string IsFolderStr { get; set; }
[XmlIgnore]
public bool IsFolder { get{ ... conversion logic from IsFolderStr is here... }}
Run Code Online (Sandbox Code Playgroud)
第二种方法是创建一个处理自定义转换的类:
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;
...
}
}
Run Code Online (Sandbox Code Playgroud)
并用BoolHolder替换属性的定义:
公共BoolHolder IsFolder {get; set;}
| 归档时间: |
|
| 查看次数: |
1868 次 |
| 最近记录: |