Пример #1
0
        public static List <T> ToList <T>(DataTable table, AbstractDatabase Db, IUnityContainer container, ICacheManager cache, string pluginName, string unityname)
        {
            Type     type    = typeof(T);
            List <T> objects = new List <T>();
            T        obj     = FactoryModel.GetObject <T>(Db, container, cache, pluginName, unityname);

            if (table != null && table.Rows.Count > 0)
            {
                while (objects.Count < table.Rows.Count)
                {
                    objects.Add((T)((ICloneable)obj).Clone());
                }

                foreach (PropertyInfo property in type.GetProperties())
                {
                    if (table.Columns.IndexOf(property.Name) >= 0)
                    {
                        for (int index = 0; index < table.Rows.Count; index++)
                        {
                            object val = table.Rows[index][property.Name];
                            if (val == System.DBNull.Value)
                            {
                                val = null;
                            }
                            property.SetValue((object)objects[index], val, null);
                        }
                    }
                }
            }
            return(objects);
        }
Пример #2
0
        public static void LoadAttribute(List <Assembly> BusinessDll, ModulePlugin mp)
        {
            List <WinformControllerAttributeInfo> cmdControllerList = new List <WinformControllerAttributeInfo>();

            for (int k = 0; k < BusinessDll.Count; k++)
            {
                //System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(BusinessDll[k]);
                System.Reflection.Assembly assembly = BusinessDll[k];
                Type[] types = assembly.GetTypes();
                for (int i = 0; i < types.Length; i++)
                {
                    WinformControllerAttribute[] winC = ((WinformControllerAttribute[])types[i].GetCustomAttributes(typeof(WinformControllerAttribute), true));

                    if (winC.Length > 0)
                    {
                        WinformControllerAttributeInfo cmdC = new WinformControllerAttributeInfo();
                        cmdC.controllerName  = types[i].Name;
                        cmdC.defaultViewName = winC[0].DefaultViewName;
                        //cmdC.winformController = (AbstractController)Activator.CreateInstance(types[i], null);
                        cmdC.winformController = (AbstractController)FactoryModel.GetObject(types[i], mp.database, mp.container, mp.cache, mp.plugin.name, null);
                        cmdC.MethodList        = new List <WinformMethodAttributeInfo>();
                        cmdC.ViewList          = new List <WinformViewAttributeInfo>();

                        MethodInfo[] property = types[i].GetMethods();
                        for (int n = 0; n < property.Length; n++)
                        {
                            WinformMethodAttribute[] WinM = (WinformMethodAttribute[])property[n].GetCustomAttributes(typeof(WinformMethodAttribute), true);
                            if (WinM.Length > 0)
                            {
                                WinformMethodAttributeInfo cmdM = new WinformMethodAttributeInfo();
                                cmdM.methodName = property[n].Name;
                                cmdM.methodInfo = property[n];
                                if (WinM[0].OpenDBKeys != null && WinM[0].OpenDBKeys.ToString().Trim() != "")
                                {
                                    cmdM.dbkeys = WinM[0].OpenDBKeys.Split(new char[] { ',' }).ToList();
                                }
                                cmdC.MethodList.Add(cmdM);
                            }
                        }

                        WinformViewAttribute[] viewAttribute = (WinformViewAttribute[])types[i].GetCustomAttributes(typeof(WinformViewAttribute), true);
                        for (int n = 0; n < viewAttribute.Length; n++)
                        {
                            WinformViewAttributeInfo winView = new WinformViewAttributeInfo();
                            winView.Name          = viewAttribute[n].Name;
                            winView.DllName       = viewAttribute[n].DllName;
                            winView.ViewTypeName  = viewAttribute[n].ViewTypeName;
                            winView.IsDefaultView = winView.Name == cmdC.defaultViewName ? true : false;

                            //Assembly _assembly = Assembly.LoadFrom(winView.DllName);
                            winView.ViewType = assembly.GetType(winView.ViewTypeName, false, true);
                            cmdC.ViewList.Add(winView);
                        }
                        cmdControllerList.Add(cmdC);
                    }
                }
            }

            mp.cache.Add(mp.plugin.name + "@" + GetCacheKey(), cmdControllerList);
        }
Пример #3
0
        public static T ToObject <T>(DataTable dt, int Rowindex, AbstractDatabase Db, IUnityContainer container, ICacheManager cache, string pluginName, string unityname)
        {
            T obj = FactoryModel.GetObject <T>(Db, container, cache, pluginName, unityname);

            if (Rowindex >= dt.Rows.Count)
            {
                return(obj);
            }
            //列名
            string columnName;
            //属性名
            string propertyName;
            //列数量
            int column = dt.Columns.Count;
            //属性数量
            int propertyNum = obj.GetType().GetProperties().Length;

            //遍历所有列
            for (int i = 0; i < column; i++)
            {
                //遍历所有属性
                for (int j = 0; j < propertyNum; j++)
                {
                    columnName   = dt.Columns[i].ColumnName.ToUpper();
                    propertyName = obj.GetType().GetProperties()[j].Name.ToUpper();
                    if (columnName == propertyName)
                    {
                        string fullName    = dt.Rows[Rowindex][columnName].GetType().FullName;
                        object objectValue = dt.Rows[Rowindex][i];
                        //如果datatable中的对应项是空类型
                        if (fullName == "System.DBNull")
                        {
                            obj.GetType().GetProperties()[j].SetValue(obj, null, null);
                        }
                        else
                        {
                            obj.GetType().GetProperties()[j].SetValue(obj, objectValue, null);
                        }
                    }
                }
            }
            return(obj);
        }
Пример #4
0
        public T NewDao <T>(string unityname)
        {
            T t = FactoryModel.GetObject <T>(_oleDb, _container, _cache, _pluginName, unityname);

            return(t);
        }
Пример #5
0
        public T NewDao <T>()
        {
            T t = FactoryModel.GetObject <T>(_oleDb, _container, _cache, _pluginName, null);

            return(t);
        }