林不知道我想做什麼是可能的,因爲我還沒有發現任何東西在谷歌和大約30分鐘的密集搜索後,我決定直接問。在存儲庫中實現一個通用類型
我已經definded一個簡單的界面,我的倉庫
public interface IRepository<TEntity> : IDisposable
{
TEntity GetById(object id);
List<TEntity> GetAll();
}
現在我要實現我的第一個存儲庫,它的工作原理是這樣
public class ContentRepository : IRepository<ContentPages>
{
private readonly Context _db = new Context();
public ContentPages GetById(object id)
{
var result = _db.ContentPages.Find(id);
return result;
}
public List<ContentPages> GetAll()
{
return _db.ContentPages.ToList();
}
public void Dispose()
{
_db.Dispose();
}
}
這工作得很好,但是當我注入我的存儲庫我的mvc控制器需要一個IRepository<ContentPages>
作爲參數類型,我只是想要一個IRepository
。
我試圖通用型移動到功能本身這樣
public interface IRepository : IDisposable
{
TEntity GetById<TEntity>(object id);
List<TEntity> GetAll<TEntity>();
}
}
當我這樣做,我不知道如何在執行我的定義泛型類型TEntity
所以在最後我希望我的使用界面,而無需speficing一個類型,因此它從實際的對象這樣
public constructor1(IRepository ContentRepository){}
下一個控制器獲取t時的類型他構造
public constructor2(IRepository BlogRepository){}
等
我希望我能描述我的問題足夠接近能跟大家瞭解:)
當我使用第一示例和實施如下: 返回_db.ContentPages.Find(ID); 我得不能轉換ContentPages到TEntity 我不能說Tentity:ContentPages,因爲它違反了接口 – Marvin