我一直在试图创建一个简单的基类来封装我的数据库访问的一些约定。我通常会创建一个名为“products_retrieve_product”的存储区,以根据productID选择一个产品。我希望基类中的“Retrieve”方法返回派生类在其定义中提供的类型。我正试图用泛型来实现吗?如何通过基类中的方法返回泛型?
public class MyBaseClass <T>
{
private string _className;
public MyBaseClass()
{
_className = this.GetType().Name;
}
public virtual T Retrieve(int ID)
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand(String.Format("{0}s_Retrieve_{0}", _className));
db.AddInParameter(dbCommand, String.Format("@{0}ID", _className), DbType.Int32, ID);
using (IDataReader dr = db.ExecuteReader(dbCommand))
{
if (dr.Read())
{
BOLoader.LoadDataToProps(this, dr);
}
}
return (T)this;
}
}
我卡上的部分是“检索”方法是如何铸就的对象为派生类型。 – 2009-03-02 19:37:24