예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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;
                }
            }
        }