4
我正在使用一個通用的存儲庫接口,它允許我添加,查找,更新和刪除不同類型的對象。然後,我實現了兩個具體的存儲庫,並可以在不更改應用程序的情況下切換它們。一切都完美地斷開連接。但我遇到了一個障礙。我的存儲庫方法中的代碼只是感覺不對,我無法弄清楚如何更好地做到這一點。這裏是我的代碼片段:.net體系結構:創建一個IRepository <T>一般
public class OracleRepository<T> : IRepository<T> where T : new()
{
public IQueryable<T> GetAll()
{
if (typeof(T) == typeof(Object1))
{
return (IQueryable<T>)DataAccess.GetAllObject1().AsQueryable();
}
if (typeof(T) == typeof(Object2))
{
return (IQueryable<T>)DataAccess.GetAllObject2().AsQueryable();
}
throw new NotImplementedException();
}
}
的問題是,我的數據訪問(從DataReader創建對象)是不是通用的,每種類型的對象,它支持特定的方法。
我可以重寫上面的內容,以避免if-then-elseif使用泛型或其他方式的列表嗎?
不是更簡單的答案是從DataAccess返回一個對象(傳遞類型或其他)或使用NHibernate或Linq To SQL? – gcores 2008-12-08 11:53:37