Prism Xamarin 6.2 IDependencyService正在服务中

时间:2016-08-15 16:28:15

标签: c# xamarin xamarin.forms prism

我使用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>()));
}

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

你根本不应该使用DependencyService。不需要它。你已经有了一个真正的DI容器。改用它。即使您在平台项目中使用DependencyService属性,也不需要通过调用DependencyService来解决它们。棱镜会自动为你解决它们。您也不应该手动将任何东西注入您的ctor,因为只要您在容器中注册了服务,您的容器就会自动为您执行此操作。