我有一个仓储类两个通用的保存方法:如何编写处理单个对象和集合的通用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