簡體   English   中英

在靜態類C#ASP.NET Web窗體中調用靜態方法

[英]Invoke static method in static class C# ASP.NET Web Forms

我在App_Code文件夾中放置了一個靜態類TestClass。 該類包含一個靜態方法TestMethod。 通過Button_Click方法從Default.aspx.cs中,我嘗試調用TestMethod。 -測試= TestClass.TestMethod()。 這會產生錯誤:由於其保護級別,無法訪問“ TestClass”。

感覺像應該將靜態類和_Default類放置在公共名稱空間中,但這將“排除” Default.aspx控件引用。

我究竟做錯了什么?

您需要將TestClass聲明為public:

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

默認可見性對於類型是internal對於類型定義的成員是private的。 App_Code文件夾將被編譯到其自己的程序集中,這與編譯后台代碼時創建的程序集不同。 internal類型不能在程序集之間共享(這不是100%正確,但在這種情況下為true),因此為什么會出現此問題。

嘗試將其設為公共靜態。

public class TestClass{
   public static TestMethod(){}

}

確保TestClass是公共的:

public class TestClass
{
}

將類添加到Visual Studio時的默認設置是忽略“ public”。

確保方法原型上至少具有“內部”作用域。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM