![](/img/trans.png)
[英]Inconsistent accessibility: parameter type 'x' is less accessible than method 'y'
[英]Accessibility: Parameter type is less accessible than method
這個問題已經回答了幾次,但我仍然無法讓我的代碼工作。 我有一個非常簡單的類,如下所示:
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 變量設置為私有,然后將 ProductController 設為公開。
我讀了這個答案:
不一致的可訪問性:參數類型的可訪問性不如方法,它基本上告訴我該類需要是公共的(它已經是)並且參數需要“與方法一樣可訪問”。 意思是公開,對吧?
但是,如果我也將參數設置為 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。
看起來接口應該是public
namespace SportsStore.Models
{
public interface IProductRepository
{
IQueryable<Product> Products { get; }
}
}
這同樣適用於您傳遞給構造函數的類。
我最近遇到了你的錯誤。 公開接口
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.