通用存储库不一致的可访问性

时间:2015-10-14 09:57:37

标签: c# asp.net entity-framework generics repository-pattern

使用以下代码:

public IGenericRepository<TEntity> Repository<TEntity>() where TEntity : class
    {
        if (repositories.Keys.Contains(typeof(TEntity)) == true)
        {
            return repositories[typeof(TEntity)] as IGenericRepository<TEntity>;
        }
        IGenericRepository<TEntity> repo = new GenericRepository<TEntity>(_context);
        repositories.Add(typeof(TEntity), repo);
        return repo;
    }

我得到的错误,

  

错误1可访问性不一致:返回类型   'DataModel.GenericRepository.IGenericRepository'更少   比方法更容易   'DataModel.UnitOfWork.UnitOfWork.Repository()'C:\ Users \ Anoop.k \ documents \ visual   工作室   2013 \ Projects \ WebAPI \ DataModel \ UnitOfWork \ UnitOfWork.cs 30 44 DataModel

我知道IGenericRepository repo默认是私有的。但在这种情况下该怎么办? 请帮帮我。

2 个答案:

答案 0 :(得分:3)

我认为您应该将您的界面定义为公开。

或试试这个:

public IGenericRepository<TEntity> Repository<TEntity>() where TEntity : class
{
        if (repositories.Keys.Contains(typeof(TEntity)) == true)
        {
            return repositories[typeof(TEntity)] as IGenericRepository<TEntity>;
        }
        GenericRepository<TEntity> repo = new GenericRepository<TEntity>(_context);
        repositories.Add(typeof(TEntity), repo);
        return repo;
}

答案 1 :(得分:1)

您无法从公共方法返回私有类型。

如果您希望其他类能够使用它,请将IGenericRepository的可访问性更改为public。

另见What is a private interface?