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

Generic Repository Inconsistent accessibility

使用以下代码:

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;
    }

我得到的错误,

Error 1 Inconsistent accessibility: return type 'DataModel.GenericRepository.IGenericRepository' is less accessible than method 'DataModel.UnitOfWork.UnitOfWork.Repository()' C:\Users\Anoop.k\documents\visual studio 2013\Projects\WebAPI\DataModel\UnitOfWork\UnitOfWork.cs 30 44 DataModel

我知道 IGenericRepository 存储库默认是私有的。但遇到这种情况怎么办? 请帮助我。

您不能 return 来自 public 方法的私有类型。

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

另见 What is a private interface?

我认为您应该将接口定义为 public。

或者试试这个:

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;
}