利用反射操作工厂模式三层架构时获取一个Model实体类
时间:2011-06-15 来源:cestarme
如果操作一个未知的数据库时,也就是说未知数据库我可以去操作,但并不知道这个数据库有哪些字段,这里我运用了动态生成实体类,这里麻烦就出来了,折腾了一半天,不知道这个添加数据时怎么获取实体类Model,方法是Add(类空间 model) 但是我用反射怎么获取实体类,就弄不清楚了. 其实非常的简单.
看下面的代码:
/// <summary> /// 获取一个表的model /// </summary> /// <param name="TableName"></param> /// <returns></returns> public object Model(string TableName) { Assembly a = ReflectionUtil.LoadAssembly(Globals.UserDATA_Assembly + ".Model"); Type t = ReflectionUtil.GetType(a, Globals.UserDATA_Assembly + ".Model." + TableName + "Model"); return ReflectionUtil.CreateInstance(t, null); }
上面代码中有ReflectionUtil操作类已经在上几节中我贴出了代码的哈.
用反射得一个bll操作类,并使用其中添加方法添加一条数据,代码在下面:
Assembly a = ReflectionUtil.LoadAssembly(Globals.UserDATA_Assembly + ".BLL"); Type t = ReflectionUtil.GetType(a, Globals.UserDATA_Assembly + ".BLL.CategoryBLL"); object o = ReflectionUtil.CreateInstance(t, null); MethodInfo mi = t.GetMethod("Add"); Object[] obj = new Object[1]; obj[0] = Model("Category");//其实就是这里没有拐过来,将model类当作object对像中一个参数就ok了. int i = (int)mi.Invoke(o, obj);
代码有点乱,还没有整理.写的粗略,主要让也遇到这样的问题的朋友少在这里拐弯弯.呵呵.
相关阅读 更多 +