C# - 在普通类中暴露静态类?

时间:2009-11-13 22:34:16

标签: c# asp.net class inheritance static

这是一个简单的例子:

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

是否可以公开静态类?

3 个答案:

答案 0 :(得分:5)

“揭露”是什么意思?静态类已经可供任何想要使用它们的人使用。

听起来你可能试图从一个类派生或使用一个属性只是为了避免输入那么多 - 这是一个坏主意。继承是专门化的,而不是让名称更容易达到:)只需要一个using指令:

using System.Web.Security;

然后您可以在该代码中的任何位置使用Roles.XXX

答案 1 :(得分:1)

我不一定知道您为什么要这样做,但您可以做的一件事是创建自定义Roles类并从静态方法克隆方法,并在这些方法中调用静态方法中的方法类。

答案 2 :(得分:0)

您是否尝试使用自己的额外方法/ etc扩展System.Web.UI.Page?如果是这样,为什么不使用继承并使您的Page继承自System.Web.UI.Page。然后,您所要做的就是更改各种ASPX页面以使用您的页面而不是默认页面。如果这是你想要的,check out this article是一个不错的例子。