这个问题已被回答了几次,但我仍然无法让我的代码工作。我有一个非常简单的类看起来像这样:
namespace SportsStore.Controllers {
public class ProductController : Controller {
private IProductRepository repository;
public ProductController(IProductRepository repo) {
repository = repo;
}
public ViewResult List() => View(repository.Products);
}
}
使用IproductRepository.cs
namespace SportsStore.Models
{
interface IProductRepository {
IQueryable<Product> Products { get; }
}
}
我得到的错误当然是这一个:
Severity Code Description Project File Line Suppression State
Error CS0051 Inconsistent accessibility: parameter type
'IProductRepository' is less accessible than method
'ProductController.ProductController(IProductRepository)' SportsStore
我可以看到问题是我不应该将IproductRepository变量设置为private,然后将ProductController公开。
我读到了这个答案:
Inconsistent Accessibility: Parameter type is less accessible than method
它基本上告诉我该课程需要公开(它已经是),参数需要像&#39;那样可以访问。意思是公开的,对吧?
但是如果我将参数设置为public也是如此:
public IProductRepository repository;
然后我仍然会收到此错误:
Severity Code Description Project File Line Suppression State
Error CS0052 Inconsistent accessibility: field type 'IProductRepository'
is less accessible than field 'ProductController.repository' SportsStore
我该如何解决这个问题?
注意:这是Adam Freeman出版的Asp Net Core一书中的一个例子,该链接提供了该项目的github,其中代码与上面的代码相同,所以他们没有对它进行任何更正。好像应该有效。我正在运行Visual Studio 2017,如果这有任何区别。
答案 0 :(得分:2)
看起来界面应该是公开的
namespace SportsStore.Models
{
public interface IProductRepository
{
IQueryable<Product> Products { get; }
}
}
答案 1 :(得分:-2)
我最近遇到了您的错误。公开接口