有关三层架构的问题

lutaotony 2010-04-20 09:37:49
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。


源文件: E:\Reference\Reference\MyReference.Service\Manage\UserManage.cs 行: 100

堆栈跟踪:


[NullReferenceException: 未将对象引用设置到对象的实例。]
My.Reference.Service.Manage.UserManage.FindUserByName(String userName) in E:\Reference\Reference\MyReference.Service\Manage\UserManage.cs:100
Login.btnlogin_Click(Object sender, EventArgs e) in e:\Reference\Reference\web\Login.aspx.cs:71
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +75
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +97
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4921

初学三层架构,这里用的是抽象工厂模式,用反射调用当前程序集,
下面就是部分代码?不知道那里的问题,向高手求教:
protected void btnlogin_Click(object sender, EventArgs e)
{
userManage = new UserManage();这里设置断点
UsersInfo userInfo = new UsersInfo();
}

用户管理类
public class UserManage : IUsers
{
UserDB userdb = null;
public UserManage()
{
userdb = IDBFactory.CreateUserDB();这里设置断点
}
public UsersInfo FindUserByName(string userName)
{
try
{
return userdb.FindUserByName(userName);这里断点看到这里是this.userdb=null;
}
catch (Exception ex)
{
throw ex;这里就是最后抛出的异常
}
}
}
抽象工厂
public abstract class IDBFactory
{

public static readonly string currentAssemblyName = Assembly.GetAssembly(typeof(IDBFactory)).ToString().Split(',')[0];

这个currentAssemblyName的值是=My.Reference.Dal.IDALFactory


public static UserDB CreateUserDB()
{
string className = ConfigurationManager.AppSettings["UserDB"];
(
return (My.Reference.Dal.IDAL.UserDB)System.Reflection.Assembly.Load(currentAssemblyName).CreateInstance(className);我个人认为这里不应该是null
}
}
配置文件信息
<appSettings>
<add key="providerNameType" value="sql"/>
<!--动态反射具体数据操作类 配置信息 -->
<add key="UserDB" value="My.Reference.Dal.Sql.SqlUserDB"/>
<connectionStrings>
<add name="SqlCon" connectionString="server=.\SqlExpress;user=sa;pwd=123456;database=MyReference;" providerName="System.Data.SqlClient"/>
</connectionStrings>
...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lutaotony 2010-04-20
  • 打赏
  • 举报
回复
是return userdb.FindUserByName(userName);这里断点看到这里是this.userdb=null;
这句
litgle 2010-04-20
  • 打赏
  • 举报
回复
你的UserManage.cs文件第100行是哪一句?这里有一个对象没有获得实例,所以报异常。

110,539

社区成员

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

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

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