我使用SQLite进行通过ISQLite接口,这是通过[assembly:Dependency(typeof(SQLite_iOS))]标准方式实现的......
但我也试图通过Repository模式实现数据访问模型
我的BaseRepository类看起来像这样
public abstract class BaseRepository<TEntity, TKey> : IRepository<TEntity, TKey> where TEntity : class, new()
{
private readonly SQLiteAsyncConnection _connection;
protected BaseRepository(ISQLite sqlite)
{
_connection = sqlite.GetAsyncConnection();
_connection.CreateTableAsync<TEntity>().Wait();
}
对于每个模型,我都有一个BaseRepository类的实现
public class SectorsRepository : BaseRepository<Sectors, int>, ISectorsRepository
{
public SectorsRepository(ISQLite context)
: base(context)
{
}
}
我现在正在努力如何注册每个Repository类。显然,这不起作用,因为我没有依赖服务的实例;
protected override void RegisterTypes()
{
Container.RegisterType<ISectorsRepository, SectorsRepository>(new InjectionConstructor(dependencyService.Get<ISQLite>()));
}
有什么想法吗?
谢谢
答案 0 :(得分:1)
你根本不应该使用DependencyService。不需要它。你已经有了一个真正的DI容器。改用它。即使您在平台项目中使用DependencyService属性,也不需要通过调用DependencyService来解决它们。棱镜会自动为你解决它们。您也不应该手动将任何东西注入您的ctor,因为只要您在容器中注册了服务,您的容器就会自动为您执行此操作。