/// <summary> /// TextStreamからオブジェクトにデシリアライズ /// </summary> /// <typeparam name="T"></typeparam> /// <param name="tr"></param> /// <param name="extension"></param> /// <returns></returns> public static T Deserialize <T>(TextReader tr, DataType extension) where T : class { try { switch (extension) { case DataType.Json: return(JSON.Deserialize <T>(tr)); case DataType.Xml: return(XML.Deserialize <T>(tr)); case DataType.Yml: return(YML.Deserialize <T>(tr)); } } catch { //return new T(); // ↑のようにする場合は、where T : new() が必要。 // 但し、この場合は配列を T として指定できなくなるので注意 return(null); } return(null); }
/// <summary> /// オブジェクトをシリアライズしてTextStreamに出力 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="tw"></param> /// <param name="extension"></param> public static void Serialize <T>(object obj, TextWriter tw, DataType extension) { if (obj != null) { switch (extension) { case DataType.Json: JSON.Serialize <T>(obj, tw); break; case DataType.Xml: XML.Serialize <T>(obj, tw); break; case DataType.Yml: YML.Serialize <T>(obj, tw); break; } } }