public static class XmlObjectSwitch
{
private static ILog log = LogManager.GetLogger(typeof(XmlObjectSwitch));
/// <summary>
/// 从Xml反序列化
/// </summary>
/// <typeparam name="O">对象类型</typeparam>
/// <param name="s">Xml格式的字符串</param>
/// <returns>对象</returns>
public static O DeserializeFromXml<O>(string s)
{
O result = default(O);
try
{
StringReader reader = new StringReader(s);
XmlSerializer serializer = new XmlSerializer(typeof(O));
result = (O)serializer.Deserialize(reader);
}
catch
{
log.Error("反序列化 『" + s + " 』失败 ");
}
return result;
}
/// <summary>
/// 从Xml反序列化
/// </summary>
/// <typeparam name="O">对象类型</typeparam>
/// <param name="s">Xml格式的字符串</param>
/// <returns>对象</returns>
public static O DeserializeFromXml<O>(string s,string typeName)
{
O result = default(O);
try
{
XmlTypeAttribute oldAttribute = new XmlTypeAttribute();
oldAttribute.TypeName = typeName;
XmlAttributes oldAttributes = new XmlAttributes();
oldAttributes.XmlType = oldAttribute;
XmlAttributeOverrides oldOverrides = new XmlAttributeOverrides();
oldOverrides.Add(typeof(O), oldAttributes);
StringReader reader = new StringReader(s);
XmlSerializer serializer = new XmlSerializer(typeof(O), oldOverrides);
result = (O)serializer.Deserialize(reader);
}
catch
{
log.Error("反序列化 『" + s + " 』失败 ");
}
return result;
}
/// <summary>
/// 序列化为Xml
/// </summary>
/// <typeparam name="O">对象类型</typeparam>
/// <param name="o">对象</param>
/// <returns>Xml格式的字符串</returns>
public static string SerializeToXml<O>( O o)
{
string result = "";
try
{
StringWriter writer = new StringWriter();
XmlSerializer serializer = new XmlSerializer(typeof(O));
serializer.Serialize(writer, o);
result = writer.ToString();
}
catch
{
log.Error("序列化 『" + o.GetType() + " " + o.ToString() + " 』失败 ");
}
return result;
}
}
}
iws.AsyncInvoke("Stock", new object[] { XmlObjectSwitch.SerializeToXml<StockParamter>(sp) });