无法访问存储库基类方法
本文关键字:基类 类方法 存储 访问 | 更新日期: 2023-09-27 17:55:35
在我的特定存储库类中,例如CollectionRepository,我继承了通用基类(BaseRepository),并在构造函数中使用应该注入的基本UnitOfWork。但是,我无法访问任何BaseRepository继承的方法。
完全没有想法,任何帮助将不胜感激。
这里有一些代码来说明我的问题:
我的控制器,其中注入了存储库。
public readonly ICollectionRepository _collectionRepository;
public HomeController(ICollectionRepository collectionRepository, IRepository<Collection> repository)
{
_collectionRepository = collectionRepository;
}
public ActionResult Index()
{
_collectionRepository. //Here i only get the ICollectionRepositoryMethods
return View(new List<Note>());
}
我的基本仓库:
public class BaseRepository<T> : IRepository<T> where T : IAggregateRoot
{
public readonly IUnitOfWork _unitOfWork;
public BaseRepository(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public BaseRepository()
{}
public void Save(T Entity)
{
_unitOfWork.Session.Save(Entity);
}
}
这里是继承基础的特定存储库类。
public class CollectionRepository : BaseRepository<Collection>, ICollectionRepository
{
public CollectionRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
{
}
public IList<Collection> GetTodaysCollections()
{
throw new System.NotImplementedException();
}
}
我正在使用结构图像这样配置CollectionRepository,不确定这是否正确:
For<ICollectionRepository>().Use<CollectionRepository>();
您可以为 ICollectionRepository 实现的 BaseRepository 引入一个接口。
这将让任何处理ICollectionRepository的人都知道BaseRepository方法。
public interface IBaseRepository<T>
{
void Save(T Entity);
}
BaseRepository实现了:
public class BaseRepository<T> : IBaseRepository<T>, IRepository<T> where T : IAggregateRoot
现在,当ICollectionRepository
实现该接口时,所有类依次实现ICollectionRepository
也实现IBaseRepository
。
public ICollectionRepository<T> : IBaseRepository<T>
{
//ICollectionRepository methods go here...
}
由于CollectionRepository
继承自实现IBaseRepository
接口的BaseRepository
,因此您已经满足要求,现在可以调用基类方法。