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); }
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); }
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); }
public T NewDao <T>(string unityname) { T t = FactoryModel.GetObject <T>(_oleDb, _container, _cache, _pluginName, unityname); return(t); }
public T NewDao <T>() { T t = FactoryModel.GetObject <T>(_oleDb, _container, _cache, _pluginName, null); return(t); }