求助,winform 用户控件调用反射函数,在设计时下出错的问题,

JasonZhou 2009-03-31 11:05:10
角决方案里有以下几个类库
Js.BLL 业务层

namespace Js.BLL
{
public class Message
{
Js.IDAL.IMessage dal = DataBaseProvider<Js.IDAL.IMessage>.GetInstance("Message");
public Js.Model.Message[] GetMessage()
{
return dal.GetMessage();
}
}
}

Js.Model 实体层
Js.IDAL 数据层接口
Js.Data 数据访问对像

namespace Js.Data
{
public class DataBaseProvider<T>
{
private DataBaseProvider()
{ }

private static T _instance = default(T);
private static object lockHelper = new object();
private static string _clsName = "";

private static void GetProvider()
{
try
{
_instance = (T)Assembly.Load("Js.Data.SqlServer").CreateInstance("Js.Data.SqlServer."+ _clsName);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}

public static T GetInstance(string clsName)
{
_clsName = clsName;
if (_instance == null)
{
lock (lockHelper)
{
if (_instance == null)
{
GetProvider();
}
}
}
return _instance;
}
}
}

Js.Data.SqlServer Sql数据访问层

namespace Js.Data.SqlServer
{
public class Message : Js.Data.DbHelper, Js.IDAL.IMessage
{
public Js.Model.Message[] GetMessage()
{
ArrayList ArrMsg = new ArrayList();
string SQL_STR = "SELECT [MessageBody], [MessageTime] FROM [MessageBoard] ORDER BY [MessageTime] DESC";
DbDataReader dt = ExecuteReader(CommandType.Text, SQL_STR, null);
while (dt.Read())
{
Js.Model.Message msg = new Js.Model.Message();
msg.MessageBody = (string)dt["MessageBody"];
msg.MessageTime = (DateTime)dt["MessageTime"];
ArrMsg.Add(msg);
}
return (Js.Model.Message[])ArrMsg.ToArray(typeof(Js.Model.Message));
}
}
}

Js.MyForm UI层,winform实现
在UI里有一个用户控件并调用了业务层代码:

private Js.BLL.Message bllMsg = new Js.BLL.Message();

把户控件拖到主窗口上面时出现错误:Js.Data.SqlServer.Message不能强制转换成Js.IDAL.IMessage
但编译又可以通过,而且能够正常运行,
在用户控件里注释以下代码后,把户控件拖到主窗口上面时又正常,不出现任何问题

//private Js.BLL.Message bllMsg = new Js.BLL.Message();

所以我想可能这个问题只是在设计时才出现,
而且把以下代码放到主窗口里面又不会出现问题?

private Js.BLL.Message bllMsg = new Js.BLL.Message();


我总结了一下:
1,在主窗口里实例化Js.BLL.Message不会出现问题
2,在用户控件里实例化Js.BLL.Message不会出现问题
3,把户控件拖到主窗口就会出现错误,但程序能正常运行

请高手帮看看是哪里的问题?
...全文
168 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2009-03-31
  • 打赏
  • 举报
回复
可能设计时没有实例,自然也就不能反射。
zzxap 2009-03-31
  • 打赏
  • 举报
回复
10秒看不完的问题,只能顶了
wenblue7 2009-03-31
  • 打赏
  • 举报
回复
up
kan
wanghui0380 2009-03-31
  • 打赏
  • 举报
回复
private Js.BLL.Message bllMsg=null

if(!DesignMode) //判断一下是否在设计期
{
bllMsg=new Js.BLL.Message();
}
v_oneforever 2009-03-31
  • 打赏
  • 举报
回复
呵呵。。加入帮顶行列
baiyunyinv 2009-03-31
  • 打赏
  • 举报
回复
帮顶了.
wjhgzx 2009-03-31
  • 打赏
  • 举报
回复
帮你顶下。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧