思路是这样的:用一个DataSet代替B/S中的HttpContext,用工厂模式写一个类来实现BN层与WEB层的对应。
这样,是不是有点像MVC了。
下面是代码:
using System;
using System.Data;
using Business;
namespace Business.Base
{
/// <summary>
/// Description:窗体基类的公用函数类。
/// 本类提供窗体基类所需要的一些方法,例如
/// 写入,读取DataSet中的数据等
/// </summary>
public class FormCommonBN
{
/// <summary>
/// 存储数据的DataSet表的名称。
/// </summary>
public const string DTNAME = "Meta";
/// <summary>
/// 当前窗体名称列。
/// </summary>
public const string FORMNAME = "FormName";
/// <summary>
/// Description:默认构造函数。
/// </summary>
private FormCommonBN()
{
}
/// <summary>
/// Description:从DataSet中取得DataTable。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="key">列名称</param>
/// <returns>DataTable</returns>
public static DataTable GetDataTable(DataSet ds, string key)
{
if ((ds.Tables[DTNAME] == null)
|| ds.Tables[DTNAME].Rows.Count <= 0)
{
throw new Exception("没有您所需要的数据。");
}
return (DataTable)ds.Tables[FormCommonBN.DTNAME].Rows[0][key];
}
/// <summary>
/// Description:从DataSet中取得值。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="key">列名称</param>
/// <returns>取得的值</returns>
public static object GetData(DataSet ds, string key)
{
if ((ds.Tables[DTNAME] == null)
|| ds.Tables[DTNAME].Rows.Count <= 0)
{
throw new Exception("没有您所需要的数据。");
}
return ds.Tables[FormCommonBN.DTNAME].Rows[0][key];
}
/// <summary>
/// Description:从DataSet中取得字符串。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="key">列名称</param>
/// <returns>取得的值</returns>
public static string GetDataToString(DataSet ds, string key)
{
object obj = GetData(ds, key);
if (obj == null)
{
return "";
}
else
{
return obj.ToString();
}
}
/// <summary>
/// Description:从DataSet中取得整数。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="key">列名称</param>
/// <returns>取得的值</returns>
public static int GetDataToInt32(DataSet ds, string key)
{
object obj = GetData(ds, key);
if (obj == null)
{
throw new Exception("程序中用到的某个参数没有赋值。");
}
return Convert.ToInt32(obj);
}
/// <summary>
/// Dascription:设置DataSet中的DataTable。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="dt">DataTable</param>
/// <param name="key">列名称</param>
public static void SetData(DataSet ds, DataTable dt, string key)
{
if ((ds.Tables[FormCommonBN.DTNAME] == null)
|| ds.Tables[DTNAME].Rows.Count <= 0)
{
throw new Exception("没有您所需要的数据。");
}
ds.Tables["Meta"].Rows[0][key] = dt;
}
/// <summary>
/// Dascription:设置DataSet中的值。
/// </summary>
/// <param name="ds">存储数据的DataSet</param>
/// <param name="Value">设置的值</param>
/// <param name="key">列名称</param>
public static void SetData(DataSet ds, object Value, string key)
{
if ((ds.Tables[FormCommonBN.DTNAME] == null)
|| ds.Tables[DTNAME].Rows.Count <= 0)
{
throw new Exception("没有您所需要的数据。");
}
ds.Tables["Meta"].Rows[0][key] = Value;
}
}
}