gpt4 book ai didi

c# - 辅助功能 : Parameter type is less accessible than method

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:16 24 4
gpt4 key购买 nike

这个问题已经回答了几次,但我仍然无法让我的代码工作。我有一个非常简单的类,如下所示:

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 设为公共(public)。

我读了这个答案:
Inconsistent Accessibility: Parameter type is less accessible than method它基本上告诉我类需要是公开的(它已经是)并且参数需要“尽可能可访问”。意思是公开,对吧?

但是如果我也将参数设置为 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

最佳答案

看起来接口(interface)应该是public

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

这同样适用于您传递给构造函数的类。

关于c# - 辅助功能 : Parameter type is less accessible than method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48262783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com