我正在寻找与下面的代码等效的东西但是对于任何值类型而不必为每种数据类型编码switch语句.下面的代码无法编译,因为XmlConvert.ToString()没有接受和对象的重载.
int intValue = 10;
object boxedValue = (object)intValue;
string xmlValue = XmlConvert.ToString(boxedValue);
Run Code Online (Sandbox Code Playgroud)
换句话说,有没有比这更好的方法:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您是否正在尝试将业务对象转换为 XML?
也许您可能想看看 XmlSerialization。如果您在业务对象上标记一些属性,.Net 将为您完成所有花哨的 XML 工作:)。
另外,你有什么理由限制你的价值吗?XmlConvert.ToString() 有 19 个重载,其中许多都采用基元。