我有一個倉儲類兩個通用的保存方法:如何編寫處理單個對象和集合的通用Save()方法?
public void Save<T>(T entity)
{
_session.Save(entity);
}
public void Save<T>(IEnumerable<T> entities)
{
foreach (var item in entities)
{
_session.Save(item);
}
}
然而,當我使用Save(collection)
(自動推斷類型),它認識到它作爲一個T
而非IEnumerable<T>
並嘗試使用,以保存第一種方法。
我該如何編寫這個保存方法以便它可以處理這兩種情況,而無需我明確提供類型?
如果我想保持無類型的存儲庫,該怎麼辦?我希望能夠通過將類型傳遞給'Get()'來實例化存儲庫並查詢任何實體。這爲我省去了實例化同一個存儲庫的多個副本的麻煩,其中它們之間的唯一區別是類型。 – 2009-12-19 08:48:31
爲了澄清,我希望能夠這樣做:'var repo = new Repository(); repo.Get(); repo.Get (); repo.Get ();'代替:var repo1 = new Repository (); var repo2 = new Repository (); var repo3 = new Repository ();'。 –
2009-12-19 08:50:51