2009-11-13 51 views
2

這裏有一個簡單的例子:C# - 在普通類中暴露靜態類?

ASP.NET提供了幾個基於成員資格提供者的靜態類。我們永遠在我們的網頁中使用它們。我們還需要擴展基類System.Web.UI.Page類。所以,我們有一個想法是公開我們的OurCompany.Web.UI.Page實現中的各種靜態類。

我們不能用一個變量:

System.Web.Security.Roles myRoles; 

我們不能公開爲一個屬性:

internal System.Web.Security.Roles Roles { get { return System.Web.Security.Roles; } } 

我們可以不可以繼承:

internal class Roles : System.Web.Security.Roles 

是否有可能暴露靜態類?

回答

5

你是什麼意思的「揭露」?任何想要使用它們的靜態類都已經可用。

這聽起來像你可能試圖從一個類派生或使用一個屬性只是爲了避免打字 - 這是一個壞主意。繼承是專業化,而不是使名字更容易達到:)只要有一個用指令:

using System.Web.Security; 

,然後你可以使用Roles.XXX無論你在代碼想要的。

+0

Yah。認爲它會歸結爲這樣的事情。謝謝! – 2009-11-16 17:07:32

1

我不一定知道你爲什麼想要這樣做,但你可以做的一件事是創建你的自定義Roles類並從Static中克隆方法,並在這些方法中調用那些來自靜態類。

0

您是否想用自己的額外方法/ etc來擴展System.Web.UI.Page?如果是這樣,爲什麼不使用繼承並使您的頁面從System.Web.UI.Page繼承。然後,你所要做的就是改變你的各種ASPX頁面來使用你的頁面而不是默認頁面。如果這是你想要的,check out this article爲一個體面的例子。

+0

已經做到了。全局搜索/替換整個項目。重新編譯並運行,沒有錯誤。不幸的是,這並沒有直接解決我的問題。 – 2009-11-16 17:06:18