首页 新闻 赞助 找找看

利用反射的抽象工厂模式,反射不成功,求解?

0
悬赏园豆:30 [已关闭问题]

我在自己写东西时,用到了利用反射的抽象工厂模式:

代码如下:

1.工厂类:

namespace MyQQ.QQDALFactory
{
    public class DataAccess
    {
        private static readonly string _path = "MyQQ.SQLServerDAL"L;//通过服务器端配置文件获取具体数据库操作程序集

        public static IQQUser CreateUser()
        {
            string className = _path + ".User";
            IQQUser user = (IQQUser)Assembly.Load(_path).CreateInstance(className);
            return user;
        }

 }

}

2.具体数据库操作类:

namespace MyQQ.SQLServerDAL
{
    public class User : IQQUser
    {

    }

}

3.在业务类中

namespace MyQQ.BLL
{
    public class User
    {
        private IQQUser dal = MyQQ.QQDALFactory.DataAccess.CreateUser(); //此处无法通过反射实例化MyQQ.SQLServerDAL.User对象

        public void Insert(QQUserInfo user)
        {
            dal.Insert(user);
        }

 }

}
注:具体数据库操作类的Dll跟工厂类的Dll还有业务类所在DLL都在同一目录内,但是就是反射不出来数据库操作类的实例,不解??

xiaolun的主页 xiaolun | 初学一级 | 园豆:70
提问于:2009-09-08 23:58
< >
分享
其他回答(3)
0

1.你的应用程序的bin目录下一定要有被反射的dll

2.你可以试试这种反射方案

Activator.CreateInstance(Type.GetType(string.Format("EZG.Data.{0}.{1}, EZG.Data.{0}", BaseConfigs.DbType, key), false, true));

liulun | 园豆:257 (菜鸟二级) | 2009-09-09 09:15
不行哦
支持(0) 反对(0) xiaolun | 园豆:70 (初学一级) | 2009-09-09 20:50
0

.代码确实好像没什么问题,你先确定一下你在启动项目中是否引用了数据操作层的dll。

你可以跟踪调试一下..确定一下,没有对象是在什么都放出现的。

邢少 | 园豆:10926 (专家六级) | 2009-09-09 09:39
0

以上应该会生成QQDALFactory.bll和SQLServerDAL.bll。你在MyQQ.BLL层中引用下QQDALFactory.bll试试。

Jaryleely | 园豆:367 (菜鸟二级) | 2009-09-09 09:39
貌似不行
支持(0) 反对(0) xiaolun | 园豆:70 (初学一级) | 2009-09-09 20:50
0

跟踪一下,看看是不是没有执行public static IQQUser CreateUser() 就出错了,那么就是没有引用QQDALFactory.bll,如果引用的把,之前引用的删除,重新引用。

Mr雨 | 园豆:1199 (小虾三级) | 2009-09-09 10:06
还是不行
支持(0) 反对(0) xiaolun | 园豆:70 (初学一级) | 2009-09-09 20:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册