获取公共对象的可访问性错误

时间:2009-06-09 19:11:29

标签: c# asp.net

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,所以我不确定为什么会出现这个错误。

3 个答案:

答案 0 :(得分:1)

您无法在字段初始值设定项中引用类的实例字段。

cd = Util.GetCompanyIDByUser(cd.Users);移动到类构造函数,它将起作用。

您收到看似不正确的错误消息的原因是您的Util字段与.Net框架中的内部类型冲突。如果您将Util重命名为util(小写u),您将收到更正确的错误消息(但除非您将方法调用移至{,否则无法解决问题) {1}}构造函数,如上所述。)

答案 1 :(得分:0)

字段初始值设定项不能引用它自己的类成员的非静态成员。如果您将Util = new DataUtility()cd = ...和C ompanyID = ...移动到默认构造函数中,我相信您的代码可以正常运行。

答案 2 :(得分:0)

我刚刚将静态关键字添加到DataUtility初始化程序中,一切都像魅力一样。感谢大家。 :)