序列化

ClownFish为XML和JSON序列化提供了便捷的扩展方法



XML序列化

/// <summary>
/// XML序列化与反序列化的扩展方法类
/// </summary>
public static class XmlExtensions
{
	/// <summary>
	/// 将对象执行XML序列化(使用UTF-8编码)
	/// </summary>
	/// <param name="obj">要序列化的对象</param>
	/// <returns>XML序列化的结果</returns>
	public static string ToXml(this object obj)


	/// <summary>
	/// 从XML字符串中反序列化对象(使用UTF-8编码)
	/// </summary>
	/// <typeparam name="T">反序列化的结果类型</typeparam>
	/// <param name="xml">XML字符串</param>
	/// <returns>反序列化的结果</returns>
	public static T FromXml<T>(this string xml)


	/// <summary>
	///  从XML字符串中反序列化对象(使用UTF-8编码)
	/// </summary>
	/// <param name="s"></param>
	/// <param name="type">反序列化的结果类型</param>
	/// <returns></returns>
	public static object FromXml(this string s, Type type)

}

JSON序列化

/// <summary>
/// JSON序列化的工具类
/// </summary>
public static class JsonExtensions
{
	/// <summary>
	/// 将一个对象序列化为JSON字符串。
	/// </summary>
	/// <param name="obj">要序列化的对象</param>
	/// <returns>序列化得到的JSON字符串</returns>
	public static string ToJson(this object obj)


	/// <summary>
	/// 将一个对象序列化为JSON字符串。
	/// </summary>
	/// <param name="obj">要序列化的对象</param>
	/// <param name="style">JSON序列化格式</param>
	/// <returns>序列化得到的JSON字符串</returns>
	public static string ToJson(this object obj, JsonStyle style)


	/// <summary>
	/// 将一个JSON字符串反序列化为对象
	/// </summary>
	/// <typeparam name="T">反序列的对象类型参数</typeparam>
	/// <param name="json">JSON字符串</param>
	/// <returns>反序列化得到的结果</returns>
	public static T FromJson<T>(this string json)


	/// <summary>
	/// 将一个JSON字符串反序列化为对象
	/// </summary>
	/// <param name="json">JSON字符串</param>
	/// <param name="destType">反序列的对象类型参数</param>
	/// <returns>反序列化得到的结果</returns>
	public static object FromJson(this string json, Type destType)
}



示例代码

public void Json_序列化_反序列化()
{
	var obj = new NameValue { Name = "aaaa", Value = "123" };

	// 将对象序列化成JSON字符串
	string json = obj.ToJson();

	// 将JSON字符串反序列化为指定的类型
	var object2 = json.FromJson<NameValue>();
}


public void Xml_序列化_反序列化()
{
	var obj = new NameValue { Name = "aaaa", Value = "123" };

	// 将对象序列化成XML字符串
	string xml = obj.ToXml();

	// 将XML字符串反序列化为指定的类型
	var object2 = xml.FromXml<NameValue>();
}


/// <summary>
/// 模拟一个配置类型
/// </summary>
public class RunOption { /* 这里省略具体的参数成员 */ }

public void Xml_配置文件_序列化_反序列化()
{
	RunOption option = new RunOption();
	string file = @"d:\aa\xx.config";

	// 将对象序列化成XML配置文件
	XmlHelper.XmlSerializeToFile(option, file);

	// 将XML配置文件反序列化为指定的类型
	option = XmlHelper.XmlDeserializeFromFile<RunOption>(file);
}