public TemplateObject Clone()
        {
            TemplateObject obj = new TemplateObject();

            obj.Id           = Id;
            obj.DemoInput    = DemoInput;
            obj.Information  = Information;
            obj.OuterHTML    = OuterHTML;
            obj.InnerHTML    = InnerHTML;
            obj.Category     = Category;
            obj.DisplayName  = DisplayName;
            obj.DataType     = DataType;
            obj.CssName      = CssName;
            obj.DefaultValue = DefaultValue;
            obj.ShowTitle    = ShowTitle;
            obj.TitleWidth   = TitleWidth;
            obj.InputWidth   = InputWidth;
            obj.InputHeight  = InputHeight;
            obj.NoUse        = NoUse;
            return(obj);
        }
        public static TemplateObject AnalyseTemplate(string html)
        {
            if (string.IsNullOrEmpty(html))
            {
                throw new ArgumentException("分析模板 - 参数不能为空。", "html");
            }
            TemplateObject info = new TemplateObject();

            #region 外部文本

            info.OuterHTML = html;

            #endregion

            #region 内部文本

            Regex regex_InnerText = new Regex(Pattern_InnerText, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            Match match_InnerText = regex_InnerText.Match(html, 0);
            if (match_InnerText.Success)
            {
                info.InnerHTML = match_InnerText.Value;
            }
            else
            {
                info.InnerHTML = string.Empty;
            }

            #endregion

            #region 模板分类

            Regex regex_Category = new Regex(Pattern_Category, RegexOptions.IgnoreCase);
            Match match_Category = regex_Category.Match(html, 0);
            if (match_Category.Success)
            {
                info.Category = match_Category.Value;
            }
            else
            {
                info.Category = string.Empty;
            }

            #endregion

            #region 属性

            Regex regex_Properties = new Regex(Pattern_Properties, RegexOptions.IgnoreCase);
            Match match_Properties = regex_Properties.Match(html, 0);
            if (match_Properties.Success)
            {
                Regex regex_Property = new Regex(Pattern_Property, RegexOptions.IgnoreCase);
                Match match_Property = regex_Property.Match(match_Properties.Value, 0);
                while (match_Property.Success)
                {
                    string text  = match_Property.Value;
                    int    index = text.IndexOf("=");
                    string title = text.Substring(0, index);
                    string value = text.Substring(index + 1).Trim('"');
                    switch (title.ToLower())
                    {
                    case "id":
                        info.Id = value;
                        break;

                    case "displayname":
                        info.DisplayName = value;
                        break;

                    case "cssname":
                        info.CssName = value;
                        break;

                    case "datatype":
                        info.DataType = value;
                        break;

                    case "datasource":
                        info.DataSource = value;
                        break;

                    case "defaultvalue":
                        info.DefaultValue = value;
                        break;

                    case "showtitle":
                        info.ShowTitle = bool.Parse(value);
                        break;

                    case "demoinput":
                        info.DemoInput = value;
                        break;

                    case "information":
                        info.Information = value;
                        break;

                    case "showthis":
                        info.ShowThis = bool.Parse(value);
                        break;

                    case "index":
                        info.Index = int.Parse(value);
                        break;

                    case "titlewidth":
                        info.TitleWidth = int.Parse(value);
                        break;

                    case "inputwidth":
                        info.InputWidth = int.Parse(value);
                        break;

                    case "inputheight":
                        info.InputHeight = int.Parse(value);
                        break;

                    case "nouse":
                        info.NoUse = bool.Parse(value);
                        break;
                    }

                    match_Property = match_Property.NextMatch();
                }
            }

            #endregion

            return(info);
        }