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
}
}
这是DataUtility:
public class DataUtility
{
public DataUtility() {}
//snip
public int GetCompanyIDByUser(int UserID)
{
//snip
}
}
我看过,DataUility以及它里面的方法被声明为public,所以我不确定为什么会出现这个错误。
答案 0 :(得分:1)
您无法在字段初始值设定项中引用类的实例字段。
将cd = Util.GetCompanyIDByUser(cd.Users);
移动到类构造函数,它将起作用。
您收到看似不正确的错误消息的原因是您的Util字段与.Net框架中的内部类型冲突。如果您将Util
重命名为util
(小写u
),您将收到更正确的错误消息(但除非您将方法调用移至{,否则无法解决问题) {1}}构造函数,如上所述。)
答案 1 :(得分:0)
字段初始值设定项不能引用它自己的类成员的非静态成员。如果您将Util = new DataUtility()
,cd = ...
和C ompanyID = ...
移动到默认构造函数中,我相信您的代码可以正常运行。
答案 2 :(得分:0)
我刚刚将静态关键字添加到DataUtility初始化程序中,一切都像魅力一样。感谢大家。 :)