Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象无法访问,因为它';在C#MVC控制器中引用成员时的保护级别_C#_Asp.net Mvc - Fatal编程技术网

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

对象无法访问,因为它';在C#MVC控制器中引用成员时的保护级别,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器的Index()方法引用在控制器开头指定为成员的类型(ExternalSourceProvider): ExternalSourceProvider externalSource; // GET: Index public ActionResult Index() { externalSource = new ExternalSourceProvider(); 我得到一个ExternalSourceProvider()的错误;在最后一行,说由于它的保护级别,它无法访问。以下

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

ExternalSourceProvider externalSource;

// GET: Index
public ActionResult Index()
{
    externalSource = new ExternalSourceProvider();
我得到一个ExternalSourceProvider()的错误;在最后一行,说由于它的保护级别,它无法访问。以下是ExternalSourceProvider的定义:

public class ExternalSourceProvider
{
    ExternalSourceProvider() { }

    public string ExternalSiteAbsoluteURI { get; set; }

我缺少什么?

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

public class ExternalSourceProvider
{
    public ExternalSourceProvider() { }

    public string ExternalSiteAbsoluteURI { get; set; }
}
现在,这里无法访问它

externalSource = new ExternalSourceProvider();

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

public ExternalSourceProvider() { }

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

谢谢-我认为通常“public”是默认的保护级别。您能解释一下为什么在这种情况下应用了另一个默认值吗?不,类的方法的默认访问修饰符是私有的。这甚至适用于构造函数。因此,如果不指定它,构造函数的访问修饰符将是私有的。顺便说一下,有一篇关于私有构造函数的好文章