[fix]Config创建默认配置文件的开关Runtime.CreateConfigOnMissing,仅需对自动创建生效,而不应该阻止用户主动Save
智能大石头 authored at 2024-08-09 00:30:41 石头 committed at 2024-08-10 14:22:24
5.93 KiB
X
//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Reflection;
//using System.ComponentModel;
//using System.Web.UI.WebControls;
//using System.Web.UI;

//namespace XControl
//{
//    /// <summary>
//    /// 类型助手类
//    /// </summary>
//    internal class ViewHelper
//    {
//        /// <summary>
//        /// 取得所有属性列
//        /// </summary>
//        /// <param name="t"></param>
//        /// <returns></returns>
//        public static List<FieldItem> AllFields(Type t)
//        {
//            List<FieldItem> Fields = new List<FieldItem>();
//            PropertyInfo[] pis = t.GetProperties();
//            foreach (PropertyInfo pi in pis)
//            {
//                DescriptionAttribute[] Des = pi.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
//                DataObjectFieldAttribute[] Dof = pi.GetCustomAttributes(typeof(DataObjectFieldAttribute), false) as DataObjectFieldAttribute[];
//                // 必须包含DataObjectFieldAttribute,DescriptionAttribute可以为空
//                if (Dof != null && Dof.Length > 0)
//                    if (Des != null && Des.Length > 0)
//                        Fields.Add(new FieldItem(pi, Dof[0], Des[0]));
//                    else
//                        Fields.Add(new FieldItem(pi, Dof[0]));
//            }
//            return Fields;
//        }

//        /// <summary>
//        /// 取得实体类型
//        /// </summary>
//        /// <returns></returns>
//        public static Type GetEntryType<T>(ISite Site) where T : DataBoundControl
//        {
//            if (Site == null || Site.Component == null || !(Site.Component is T)) return null;
//            T dbc = Site.Component as T;
//            if (dbc == null || dbc.Page == null) return null;
//            String datasourceid = dbc.DataSourceID;
//            if (String.IsNullOrEmpty(datasourceid)) return null;
//            // 找到数据绑定控件ObjectDataSource
//            //ObjectDataSource obj = dbc.Page.FindControl(datasourceid) as ObjectDataSource;
//            ObjectDataSource obj = Find(dbc.Page, datasourceid) as ObjectDataSource;
//            if (obj == null)
//            {
//                MsgBox<T>("无法找到名为 " + datasourceid + " 的ObjectDataSource!");
//                return null;
//            }
//            // 找到实体类型
//            String typeName = obj.DataObjectTypeName;
//            if (String.IsNullOrEmpty(typeName)) typeName = obj.TypeName;
//            if (String.IsNullOrEmpty(typeName))
//            {
//                MsgBox<T>("请先配置好" + datasourceid + "再绑定数据源!");
//                return null;
//            }
//            Type t = Type.GetType(typeName);
//            if (t == null)
//            {
//                t = System.Web.Compilation.BuildManager.GetType(typeName, false, true);
//                if (t == null)
//                {
//                    Assembly[] abs = AppDomain.CurrentDomain.GetAssemblies();
//                    foreach (Assembly ab in abs)
//                    {
//                        t = ab.GetType(typeName, false, true);
//                        if (t != null) break;
//                    }
//                    if (t == null)
//                    {
//                        MsgBox<T>("无法定位数据组件类:" + typeName + ",可能你需要编译一次数据组件类所在项目。");
//                        return null;
//                    }
//                }
//            }
//            return t;
//        }

//        public static void MsgBox<T>(String msg)
//        {
//            System.Windows.Forms.MessageBox.Show(msg, typeof(T).ToString() + "控件设计时出错!");
//        }

//        public static Control Find(Control control, String id)
//        {
//            if (control == null || String.IsNullOrEmpty(id)) return null;
//            if (control.ID == id) return control;
//            if (control.Controls == null || control.Controls.Count < 1) return null;
//            foreach (Control w in control.Controls)
//                if (w.ID == id) return w;
//            foreach (Control w in control.Controls)
//            {
//                Control webc = Find(w, id);
//                if (webc != null) return webc;
//            }
//            return null;
//        }

//    }

//    /// <summary>
//    /// 数据属性元数据以及特性
//    /// </summary>
//    internal class FieldItem
//    {
//        /// <summary>
//        /// 属性元数据
//        /// </summary>
//        public PropertyInfo Info;
//        /// <summary>
//        /// 属性说明
//        /// </summary>
//        public String Description;
//        /// <summary>
//        /// 数据字段特性
//        /// </summary>
//        public DataObjectFieldAttribute DataObjectField;
//        /// <summary>
//        /// 属性名
//        /// </summary>
//        public String Name
//        {
//            get
//            {
//                return Info.Name;
//            }
//        }

//        /// <summary>
//        /// 构造函数
//        /// </summary>
//        /// <param name="pi"></param>
//        /// <param name="dof"></param>
//        public FieldItem(PropertyInfo pi, DataObjectFieldAttribute dof)
//        {
//            Info = pi;
//            DataObjectField = dof;
//        }
//        /// <summary>
//        /// 构造函数
//        /// </summary>
//        /// <param name="pi"></param>
//        /// <param name="dof"></param>
//        /// <param name="bc"></param>
//        public FieldItem(PropertyInfo pi, DataObjectFieldAttribute dof, DescriptionAttribute bc)
//        {
//            Info = pi;
//            DataObjectField = dof;
//            Description = bc.Description;
//        }
//    }
//}