文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>利用反射操作工厂模式三层架构时获取一个Model实体类

利用反射操作工厂模式三层架构时获取一个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);

代码有点乱,还没有整理.写的粗略,主要让也遇到这样的问题的朋友少在这里拐弯弯.呵呵.

相关阅读 更多 +
排行榜 更多 +
耶小兔子2

耶小兔子2

休闲益智 下载
nba2k20豪华版

nba2k20豪华版

体育竞技 下载
画线征服火柴人安卓版

画线征服火柴人安卓版

动作格斗 下载