简单的数据工厂问题,顶者有分,
小弟初学分层,照着例子做个留言本,实现显示和发送留言功能。本来分层做好没有问题,能显示和发送留,但是在加入数据访问层工厂后,就出现了问题:编译器错误信息: CS0117: “TraceILWordDbTask.ILWordTask”并不包含“ListLWord”的定义。
下面偶把各层的文件代码列出来,大伙儿帮偶看看是哪里有问题啊!
UI层后台程序ListLword.asp.cs文件:
using TraceLWordInterService; //引用业务层
public partial class ListLWord : System.Web.UI.Page
{
/// <summary>
/// 页面初始化函数
/// </summary>
private void Page_Load(object sender, EventArgs e)
{
LWord_DataBind();
}
/// <summary>
/// 留言列表邦定函数
/// </summary>
private void LWord_DataBind()
{
DataSet ds = new DataSet();
LWordService lws = new LWordService();
lws.ListLWord(ds, @"LWordTable");
m_lwordListCtrl.DataSource = ds.Tables[@"LWordTable"].DefaultView;
m_lwordListCtrl.DataBind();
}
/// <summary>
/// 发送留言函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void m_btnPost_Click(object sender, EventArgs e)
{
string userID = this.postID.Text;
string textContent = this.postText.Value;
LWordService lws = new LWordService();
lws.PostLword(userID, textContent);
// 跳转到留言显示页面
Response.Redirect("ListLWord.aspx", true);
}
}
业务层LWordService.cs文件:
using TraceDALFactory; //引用数据工厂
using TraceILWordDbTask; //引用数据接口
namespace TraceLWordInterService
{
/// <summary>
/// LWordService 中间服务类业务处理
/// </summary>
public class LWordService
{
public LWordService()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 读取数据库表 LWord,并填充 DataSet 数据集
/// </summary>
/// <param name="ds">填充目标数据集</param>
/// <param name="tableName">表名称</param>
/// <returns>记录行数</returns>
public int ListLWord(DataSet ds, string tableName)
{
//SqlServerTask lst = new SqlServerTask();
//LWordTask lwt = new LWordTask();
//return lst.ListLWord(ds, tableName);
return (new DbTaskDriver()).DbLWordDriver().ListLWord(ds, tableName);
}
///<summary>
///发送留言
///<summary>
///<param name="textContent">留言内容</param>
public void PostLword(string userID,string textContent)
{
//SqlServerTask lst = new SqlServerTask();
//LWordTask lwt= new LWordTask();
//lst.PostLWord(userID,textContent);
return (new DbTaskDriver()).DbLWordDriver().PostLWord(userID, textContent);
}
}
}
数据访问层工厂类DbTaskDriver.cs文件:
using System.Reflection;// 需要使用 .NET 反射
using TraceILWordDbTask;// 引用数据接口
namespace TraceDALFactory
{
/// <summary>
/// DbTaskDriver 数据库访问层工厂
/// </summary>
public class DbTaskDriver
{
public DbTaskDriver()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 数据工厂动态生成数据库访问对象
/// </summary>
/// <returns></returns>
public ILWordTask DbLWordDriver()
{
string assemblyName = ConfigurationSettings.AppSettings["AssemblyName"];
string constructor = ConfigurationSettings.AppSettings["Constructor"];
return (ILWordTask)Assembly.Load(assemblyName).CreateInstance(constructor, false);
}
}
}
web.config文件:
<configuration>
<connectionStrings/>
<appSettings>
<!--sql连接字符串中不可以出现"&","<",">"如果一定要用请分别用"&","<",">"替换-->
<add key="AssemblyName" value="TraceSqlServerTask" />
<add key="Constructor" value="TraceSqlServerTask.SqlServerTask" />
</appSettings>
</configuration>