对象无法访问,因为它';s在引用C#MVC控制器中的成员时的保护级别

本文关键字:控制器 C#MVC 引用 成员 保护 访问 因为 对象 | 更新日期: 2023-09-27 18:27:10

我的控制器的Index()方法引用了一个类型(ExternalSourceProvider),该类型在控制器的开头被指定为成员:

ExternalSourceProvider externalSource;
// GET: Index
public ActionResult Index()
{
    externalSource = new ExternalSourceProvider();

ExternalSourceProvider()出现错误;在最后一行,说由于它的保护级别,它无法访问。以下是ExternalSourceProvider的定义:

public class ExternalSourceProvider
{
    ExternalSourceProvider() { }
    public string ExternalSiteAbsoluteURI { get; set; }

我错过了什么?

对象无法访问,因为它';s在引用C#MVC控制器中的成员时的保护级别

您必须将默认构造函数标记为public。

public class ExternalSourceProvider
{
    public ExternalSourceProvider() { }
    public string ExternalSiteAbsoluteURI { get; set; }
}

现在,无法访问

externalSource = new ExternalSourceProvider();

默认构造函数是private(如果未指定类成员,则为类成员的默认可访问性),因此无法构造对象。使其成为public:

public ExternalSourceProvider() { }

如果只希望同一程序集中的其他类型构造该类型,也可以将其设为internal,但通常公共类应该至少有一个公共构造函数。