我一直在試圖創建一個簡單的基類來封裝我的數據庫訪問的一些約定。我通常會創建一個名爲「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