2015-10-14 39 views
0

使用代碼:通用存儲庫可訪問性不一致

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 studio 2013 \ Projects \ WebAPI \ DataModel \ UnitOfWork \ UnitOfWork.cs 30 44 Data模型

我知道IGenericRepository回購默認是私有的。但在這種情況下該怎麼辦? 請幫幫我。

+2

是IGenericRepository你的界面?爲什麼將界面設置爲私人? – Robert

回答

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

您的代碼與OP的 – Rik

+0

完全相同..不完全相同.. – 2015-10-14 10:52:23

+0

啊,現在我明白了。那麼,指出它的不同之處可能是一個好主意。 – Rik

1

您不能從公共方法返回私人類型。

如果您希望其他類能夠使用它,請將IGenericRepository的可訪問性更改爲公共。

參見What is a private interface?