三层架构写的代码报错,请帮忙看看

这样调用
CostClassInfo ccinfo = new CostClassInfo();
ccinfo.ClassName = txtClassNm.Text.Trim();
SingleMan.DALFactory.CostClass.Creat().Insert(ccinfo);
的时候报错"未将对象引用设置到对象实例"

BLL
public class CostClass
{
public void Insert(CostClassInfo costCL)
{
if (costCL.ClassName.Trim() == string.Empty)
return;
SingleMan.DALFactory.CostClass.Creat().Insert(costCL);

}
}

DALFactory
public class CostClass
{
public static SingleMan.IDAL.ICostClass Creat()
{
string a = ConfigurationSettings.AppSettings["WebDAL"];
string b = a + ".CostClass";
return (IDAL.ICostClass)Assembly.Load(a).CreateInstance(b, false);
}
}

IDAL
public interface ICostClass
{

void Insert(CostClassInfo CClassNm);

CostClassInfo GetClassByID(int ClassID);
}

Model
public class CostClassInfo
{
private int _classid;
private string _classname;

public CostClassInfo()
{

}
public CostClassInfo(string classname)
{
this._classname = classname;
}
public CostClassInfo(int classid,string classname)
{
this._classid = classid;
this._classname = classname;
}
public int ClassID
{
get
{
return _classid;
}
}

public string ClassName
{
get
{
return _classname;
}
}
}

web.config
<add key="WebDAL" value="SQLServerDAL"/>

你的数据访问层代码还没有实现啊,当前会报错了。

SQLServerDAL层要实现ICostClass,这样在DALFactory工厂模式中才可以根据web.config节中的配置值创建相应的数据访问对象,之后才能在BLL业务层中调用。

你这是微软的PetShop模式,在这里对象实体层、接口层、数据访问层、工厂层、业务层以及配置节点缺一不可的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-18
SingleMan.DALFactory.CostClass abcd = new SingleMan.DALFactory.CostClass();
abcd.Insert(ccinfo);
看看
相似回答