我不确定我想做的事情是否可行,因为我在谷歌上没有找到任何东西,经过大约 30 分钟的密集搜索,我决定直接问。
我为我的存储库定义了一个简单的接口
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>
as 参数类型,我只希望它采用IRepository
.
我试图像这样将泛型类型移动到函数本身
public interface IRepository : IDisposable
{
TEntity GetById<TEntity>(object id);
List<TEntity> GetAll<TEntity>();
}
}
当我这样做时,我不知道如何TEntity
在实现中定义我的泛型类型
所以总而言之,我希望我在不指定类型的情况下使用接口,因此它可以像这样从实际对象中获取类型
public constructor1(IRepository ContentRepository){}
下一个控制器获取此构造函数
public constructor2(IRepository BlogRepository){}
等等
我希望我能把我的问题描述得足够近,让你们理解:)