对象无法访问,因为它';在C#MVC控制器中引用成员时的保护级别
我的控制器的Index()方法引用在控制器开头指定为成员的类型(ExternalSourceProvider):对象无法访问,因为它';在C#MVC控制器中引用成员时的保护级别,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器的Index()方法引用在控制器开头指定为成员的类型(ExternalSourceProvider): ExternalSourceProvider externalSource; // GET: Index public ActionResult Index() { externalSource = new ExternalSourceProvider(); 我得到一个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”是默认的保护级别。您能解释一下为什么在这种情况下应用了另一个默认值吗?不,类的方法的默认访问修饰符是私有的。这甚至适用于构造函数。因此,如果不指定它,构造函数的访问修饰符将是私有的。顺便说一下,有一篇关于私有构造函数的好文章