2009-06-09 6 views
1
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だけでなく、その中の方法は、公開宣言されているので、私はなぜわからないましたこのエラーが発生しています。

答えて

0

DataUtilityイニシャライザにstaticキーワードを追加しました。すべてが魅力的でした。みんな、ありがとう。 :)

0

フィールド初期化子は、自身のクラスメンバーの非静的メンバーを参照できません。 Util = new DataUtility()cd = ...、およびC ompanyID = ...をデフォルトのコンストラクタに移動すると、コードが機能すると思います。

+0

MyClass(){//ここの間にすべてを追加しましたが、同じエラーが発生しました。 –

1

フィールド初期化子でクラスのインスタンスフィールドを参照することはできません。

cd = Util.GetCompanyIDByUser(cd.Users);をクラスコンストラクタに移動すると動作します。

一見間違ったエラーメッセージが表示される理由は、Utilフィールドが.Netフレームワークの内部型と競合しているためです。 Utilの名前をutil(小文字のu)に変更すると、より正確なエラーメッセージが表示されます(上記のようにメソッド呼び出しをMyClassコンストラクタに移動しない限り問題は解決しません)。