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

Moi*_*ala 11 c# asp.net

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

Pra*_*ana 17

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

public class myclass
{
 public static returntype methodname()
 {
    //your code
 }
}
Run Code Online (Sandbox Code Playgroud)

调用该函数只是使用

//ClassName.MethodName();
myclass.methodname();
Run Code Online (Sandbox Code Playgroud)

你可以看看MSDN:静态成员

建议

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

意图

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

UML图


Jon*_*eet 5

您只需要使其成为静态方法即可:

public class Foo
{
    public static void Bar()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从任何地方:

Foo.Bar();
Run Code Online (Sandbox Code Playgroud)

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

如果需要特定于实例的状态,则需要有一个实例-并且掌握适当实例的最佳方法实际上取决于您要实现的目标。如果您可以向我们提供有关类和方法的更多信息,我们可能会为您提供更多帮助。

从我记忆中可以肯定的是,ASP.NET(MVC之前)中的依赖项注入有些痛苦,但是您可能很想研究一下-如果该方法改变了任何静态状态,您最终都会得到一些在线程方面很难测试,也很难推理。