簡體   English   中英

訪問ASP.NET中App_Code中未聲明的類

[英]Accessing a Class that is NOT declared in App_Code in ASP.NET

有時,我定義業務邏輯類來“幫助”我的ASPX代碼隱藏類。 對我來說,將它們都包含在代碼隱藏文件中是最有意義的,因為它們可以一起工作。 但是,我偶爾希望從App_Code中定義的更高級別的類訪問Business Logic類,但是不能在文件外部自動訪問它們。

因此,出現了一個問題:訪問App_Code中定義的類很容易,但是如何訪問其他地方定義的類呢?

更新:另一件事,ASPX頁面類和App_Code類在同一個命名空間中-這不是問題。

注意:我已聽取了那些已做出答復(感謝伙計們)並正在進行重構的人員的建議,以簡化班級訪問。 但是,我認為問題尚未真正得到解決(以ASP.NET網站項目為例)。 我不再需要答案了,但是,如果有人可以澄清是什么使類在App_Code之外時可見,那么它很可能會幫助其他人(甚至我,在路上)。

確保將類放置在合理的名稱空間中。

在代碼中將“ using”關鍵字放在要訪問它們的文件后面。

或<%@ import(如果您在內聯代碼中使用它們)。

將包含您的類的dll放在/ bin文件夾中。

TBH我更喜歡將單獨的庫項目保留在相同的解決方案中,並在Web probject中具有項目引用。 VS為您處理構建和放置dll的過程。

在創建或添加任何文件的某個時間,它已經被創建為內容文件,而必須是編譯文件。

請按照以下過程解決此問題。

1)右鍵單擊App_Code文件夾中的類文件。 2)點擊屬性。 3)將“構建操作”從“”更改為“編譯”。4)重建應用程序。

這肯定會工作

塔沙爾·柳吉

我假設您的意思是您是在.cs文件背后的代碼中定義一個單獨的類? 您要給他們哪些訪問修飾符?

如上所述,盡管如此,我在解決方案中通常會有一個單獨的項目(通常在MyApp.Web和MyApp。等不同的命名空間中),然后從那里引用它。

您也可以只在項目中創建一個標准文件夾來訪問類,然后將它們移到那里,但是您還需要做一些其他事情以使項目可以訪問它:

  • 在瀏覽完所有其余項目符號后,如果遇到“ App_Code”文件夾問題,請確保未為該文件夾命名任何保留條款(即,將其命名為“ AppCode”,而不是“ App_Code”)。
  • 這些類都應具有與您的代碼隱藏相同的名稱空間。
  • 如果從其他類中調用它們,請確保使用公共方法將這些類公開。
  • 包括“使用MyClass;” 代碼隱藏/類文件頂部的語句。
  • 確保類的“構建操作”屬性設置為“編譯”。

您不能從.net dsnt支持多重繼承的文件后面的同一代碼中的另一個類訪問另一個類。 但是您可以在主類中將業務邏輯類創建為內部類,並將其所有功能公開,以便可以在主類中調用它們。

暫無
暫無

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

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