通用存储库不一致的可访问性
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;
}
使用以下代码:
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;
}