C# 获取公共对象上的可访问性错误
下面是DataUtility:C# 获取公共对象上的可访问性错误,c#,asp.net,C#,Asp.net,下面是DataUtility: namespace MyApp.MyNamespace { public class MyClass:System.Web.UI.Page { private DataUtility Util = new DataUtility(); private CookieData cd = MyClass.Toolbox.GetCurrentCookieData(HttpContext.Current); /
namespace MyApp.MyNamespace
{
public class MyClass:System.Web.UI.Page
{
private DataUtility Util = new DataUtility();
private CookieData cd = MyClass.Toolbox.GetCurrentCookieData(HttpContext.Current);
//below I get the error: "System.Web.UI.Util is unavailable due to its protection level"
private int CompanyID = Util.GetCompanyIDByUser(cd.Users);
protected override void OnLoad(EventArgs e)
{
//I'd like to use CompanyID here
}
protected void MyEventHandler(object sender, EventArgs e)
{
//as well as here
}
}
我已经看过了,DataUility及其内部的方法被声明为public,因此我不确定为什么会出现此错误。字段初始值设定项无法引用其自身类成员的非静态成员。如果将
Util=new DataUtility()
、cd=…
和CompanyID=…
移动到默认构造函数中,我相信您的代码可以工作。字段初始值设定项不能引用它自己的类成员的非静态成员。如果将Util=new DataUtility()
、cd=…
和CompanyID=…
移动到默认构造函数中,我相信您的代码可以工作。您不能在字段初始值设定项中引用类的实例字段
Movecd=Util.GetCompanyIDByUser(cd.Users)代码>到类构造函数,它将工作
您收到看似不正确的错误消息的原因是您的Util字段与.Net framework中的内部类型冲突。如果将Util
重命名为Util
(小写u
),则会得到更正确的错误消息(但这不会解决问题,除非将方法调用移动到MyClass
构造函数,如上所述)。不能在字段初始值设定项中引用类的实例字段
Movecd=Util.GetCompanyIDByUser(cd.Users)代码>到类构造函数,它将工作
您收到看似不正确的错误消息的原因是您的Util字段与.Net framework中的内部类型冲突。如果您将Util
重命名为Util
(小写u
),您将得到一条更正确的错误消息(但这不会解决问题,除非您将方法调用移动到MyClass
构造函数,如上所述)。我刚刚将静态关键字添加到DataUtility初始值设定项中,所有操作都非常有效。谢谢大家。:) 我刚刚在DataUtility初始值设定项中添加了静态关键字,一切都很顺利。谢谢大家。:) 我在MyClass(){//here}之间添加了所有这些,但遇到了相同的错误。我在MyClass(){//here}之间添加了所有这些,但遇到了相同的错误。
public class DataUtility
{
public DataUtility() {}
//snip
public int GetCompanyIDByUser(int UserID)
{
//snip
}
}