c# – 如何使用XmlConvert将作为对象转换的值类型转换为字符串?

我正在寻找与下面的代码等效的东西但是对于任何值类型而不必为每种数据类型编码switch语句.
下面的代码无法编译,因为XmlConvert.ToString()没有接受和对象的重载.

        int intValue = 10;
        object boxedValue = (object)intValue;
        string xmlValue = XmlConvert.ToString(boxedValue);

换句话说,有没有比这更好的方法:

public static string ToXmlString(Type type, object value) {

        switch(Type.GetTypeCode(type)) {
            case TypeCode.Int32:
                return XmlConvert.ToString((int) value);
            case TypeCode.DateTime:
                return XmlConvert.ToString((DateTime) value, XmlDateTimeSerializationMode.Unspecified);
            case TypeCode.Boolean:
                return XmlConvert.ToString((bool) value);

            // TODO:  Add case for all other value types!

            default:
                return value.ToString();
        }
    }
最佳答案
所有值类型本质上都是可序列化的.所以你只需要使用XMLSerializer.
像这样的东西会这样做(根据你的方法):

public static string ToXmlString(Type type, object value)
{
    StringBuilder sb = new StringBuilder();
    System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(sb);
    System.Xml.Serialization.XmlSerializer serial = 
        new System.Xml.Serialization.XmlSerializer(type);
    serial.Serialize(writer, value);
}

转载注明原文:c# – 如何使用XmlConvert将作为对象转换的值类型转换为字符串? - 代码日志