C#JS符号化/復号化の変換

7389 ワード

 public static class Extension

    {

        #region [ / ]

        /// <summary>

        /// 

        /// </summary>

        /// <param name="str"></param>

        /// <param name="isEscape">True Encode;False Decode</param>

        /// <returns></returns>

        public static string JSCodingString(this string str, bool isEscape = false)

        {

            if (isEscape)

                return Microsoft.JScript.GlobalObject.escape(str);

            else

                return Microsoft.JScript.GlobalObject.unescape(str);

        }



        /// <summary>

        /// js 

        /// </summary>

        /// <param name="lsto"></param>

        /// <param name="isEscape"></param>

        public static void JSCodingEntityList<T>(this List<T> lsto, bool isEscape = false)

        {

            foreach (object o in lsto)

            {

                JSCodingEntity(o, isEscape);

            }

        }



        /// <summary>

        /// js 

        /// </summary>

        /// <param name="o"></param>

        /// <param name="isEscape"></param>

        public static void JSCodingEntity<T>(this T o, bool isEscape = false)

        {

            object objValue;

            System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();

            foreach (System.Reflection.PropertyInfo p in propertys)

            {

                if (p.PropertyType == typeof(System.String))

                {

                    objValue = p.GetValue(o, null);

                    if (objValue != null)

                    {

                        if (objValue.GetType() == typeof(System.String))

                        {

                            if (isEscape)

                                p.SetValue(o, Microsoft.JScript.GlobalObject.escape(objValue.ToString()), null);

                            else

                                p.SetValue(o, Microsoft.JScript.GlobalObject.unescape(objValue.ToString()), null);

                        }

                    }

                }

            }

        }



        /// <summary>

        /// js 

        /// </summary>

        /// <param name="o"></param>

        /// <param name="isEscape"></param>

        public static void JSCodingTable(this DataSet o, bool isEscape = false)

        {

            foreach (DataTable t in o.Tables)

            {

                JSCodingEntity(t, isEscape);

            }

        }



        /// <summary>

        /// js 

        /// </summary>

        /// <param name="o"></param>

        /// <param name="isEscape"></param>

        public static void JSCodingTable(this DataTable o, bool isEscape = false)

        {

            for (int j = 0; j < o.Columns.Count; j++)

            {

                if (o.Columns[j].DataType == typeof(System.String))

                {

                    for (int i = 0; i < o.Rows.Count; i++)

                    {

                        if (isEscape)

                            o.Rows[i][j] = Microsoft.JScript.GlobalObject.escape(o.Rows[i][j].ToString());

                        else

                            o.Rows[i][j] = Microsoft.JScript.GlobalObject.unescape(o.Rows[i][j].ToString());

                    }

                }

            }

        } 

        #endregion



        #region [ : / 。]

        public static string ToJSEncodeString(this string str)

        {

            return Microsoft.JScript.GlobalObject.escape(str);

        }



        public static string ToJSDecodeString(this string str)

        {

            return Microsoft.JScript.GlobalObject.unescape(str);

        }



        public static void ToJSEncodeEntityList<T>(this List<T> lsto)

        {

            foreach (object o in lsto)

            {

                ToJSEncodeEntity(o);

            }

        }



        public static void ToJSDecodeEntityList<T>(this List<T> lsto)

        {

            foreach (object o in lsto)

            {

                ToJSDecodeEntity(o);

            }

        }



        public static void ToJSEncodeEntity<T>(this T o)

        {

            object objValue;

            System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();

            foreach (System.Reflection.PropertyInfo p in propertys)

            {

                if (p.PropertyType == typeof(System.String))

                {

                    objValue = p.GetValue(o, null);

                    if (objValue != null)

                    {

                        if (objValue.GetType() == typeof(System.String))

                        {

                            p.SetValue(o, Microsoft.JScript.GlobalObject.escape(objValue.ToString()), null);

                        }

                    }

                }

            }

        }



        public static void ToJSDecodeEntity<T>(this T o)

        {

            object objValue;

            System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();

            foreach (System.Reflection.PropertyInfo p in propertys)

            {

                if (p.PropertyType == typeof(System.String))

                {

                    objValue = p.GetValue(o, null);

                    if (objValue != null)

                    {

                        if (objValue.GetType() == typeof(System.String))

                        {

                            p.SetValue(o, Microsoft.JScript.GlobalObject.unescape(objValue.ToString()), null);

                        }

                    }

                }

            }

        }



        public static void ToJSEncodeTable(this DataSet o)

        {

            foreach (DataTable t in o.Tables)

            {

                ToJSEncodeTable(t);

            }

        }



        public static void ToJSDecodeTable(this DataSet o)

        {

            foreach (DataTable t in o.Tables)

            {

                ToJSDecodeTable(t);

            }

        }



        public static void ToJSEncodeTable(this DataTable o)

        {

            for (int j = 0; j < o.Columns.Count; j++)

            {

                if (o.Columns[j].DataType == typeof(System.String))

                {

                    for (int i = 0; i < o.Rows.Count; i++)

                    {

                        o.Rows[i][j] = Microsoft.JScript.GlobalObject.escape(o.Rows[i][j].ToString());

                    }

                }

            }

        }



        public static void ToJSDecodeTable(this DataTable o)

        {

            for (int j = 0; j < o.Columns.Count; j++)

            {

                if (o.Columns[j].DataType == typeof(System.String))

                {

                    for (int i = 0; i < o.Rows.Count; i++)

                    {

                        o.Rows[i][j] = Microsoft.JScript.GlobalObject.unescape(o.Rows[i][j].ToString());

                    }

                }

            }

        }



        #endregion

    }