2012-01-24 187 views
1

我在App_Code文件夾中放置了一個靜態類TestClass。該類包含一個靜態方法TestMethod。從Default.aspx.cs通過Button_Click方法,我試圖調用TestMethod。 - test = TestClass.TestMethod()。 這給出錯誤:由於其保護級別,「TestClass」無法訪問。在靜態類中調用靜態方法C#ASP.NET Web窗體

感覺就像靜態類和_Default類應該被放置到一個公共名稱空間中,但是這會「排除」Default.aspx控件引用。

我在做什麼錯?

+0

這裏是一個很好的鏈接,看看會解釋訪問修飾http://msdn.microsoft.com/en-us/library/wxh6fsc7%28v=vs.71%29.aspx – MethodMan

回答

3

需要聲明TestClass爲市民:

public static class TestClass 
{ 
    public static SomeType TestMethod() 
    { 
    } 
} 

默認能見度internal的類型和private的類型定義的成員。 App_Code文件夾被編譯到它自己的程序集中,與編譯代碼時創建的程序集不同。 internal類型不能在程序集之間共享(在這種情況下,這不是100%真實但是是真的),因此你有這個問題。當添加類到Visual Studio是省略了「公共」

public class TestClass 
{ 
} 

默認:

+0

非常好!謝謝你! – user1121487

1

試着讓它成爲靜態的。

public class TestClass{ 
    public static TestMethod(){} 

} 
1

確保識別TestClass是公開的。

1

請確保您的方法原型至少有'內部'範圍。

0

僅僅因爲你的類是靜態的並不意味着它可以被所有代碼/程序集訪問。確保你的靜態類有一個訪問修飾符(即public),可以通過你的web表單訪問。