从类文件调用函数而不创建该类的Object

时间:2012-01-20 08:15:29

标签: c# asp.net

我在类中创建了一个函数。我想在整个项目中调用它。但我不想在每个页面中创建该类的对象。该课程是否有任何全球声明,以便我们可以在每个页面中调用?在aspx page .cs文件的代码后面是不可能继承的。

2 个答案:

答案 0 :(得分:17)

您需要在类中创建一个Static方法,以便您可以在不创建该类对象的情况下调用该函数,如下面的代码段所示:

public class myclass
{
 public static returntype methodname()
 {
    //your code
 }
}

调用该函数只需使用

//ClassName.MethodName();
myclass.methodname();

您可以查看MSDN:Static Members

<强>建议

解决问题的另一个方法是使用SINGLETON DESIGN PATTERN

<强>意图

  1. 确保只创建一个类的一个实例。
  2. 提供对象的全局访问点。
  3. UML diagram

答案 1 :(得分:5)

您只需要将其设为静态方法:

public class Foo
{
    public static void Bar()
    {
        ...
    }
}

然后从任何地方:

Foo.Bar();

请注意,因为您没有在类型的实例上调用该方法,所以不会有任何特定于实例的状态 - 您可以访问任何静态变量,但不能任何实例变量。

如果需要特定于实例的状态,则需要有一个实例 - 获取适当实例的最佳方法将取决于您要实现的目标。如果您可以向我们提供有关课程和方法的更多信息,我们可以为您提供更多帮助。

不可否认,我记得,ASP.NET中的依赖注入(pre-MVC)有点痛苦,但你可能想要研究一下 - 如果方法改变任何静态状态,你最终会在线程方面难以测试和难以推理的东西。