簡體   English   中英

可訪問性:參數類型的可訪問性不如方法

[英]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。

https://github.com/Apress/pro-asp.net-core-mvc-2/blob/master/08%20-%20SportsStore/SportsStore/SportsStore/Controllers/ProductController.cs

看起來接口應該是public

namespace SportsStore.Models
{
    public interface IProductRepository
    {
        IQueryable<Product> Products { get; }
    }
}

這同樣適用於您傳遞給構造函數的類。

我最近遇到了你的錯誤。 公開接口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM