C# 如何使类成为整个应用程序的全局类?
我想在我的应用程序中的任何地方访问一个类,我如何才能做到这一点C# 如何使类成为整个应用程序的全局类?,c#,.net,C#,.net,我想在我的应用程序中的任何地方访问一个类,我如何才能做到这一点 更清楚地说,我在某处有一个类,它使用一些代码。我还有一个类使用相同的代码。我不想重复,所以我想通过使用一些东西在两个地方调用相同的代码。在php中,我只需将(“abc.php”)包含在。。。我不想每次使用代码时都创建对象。C#中全局类的概念实际上只是引用包含该类的适当程序集的简单问题。一旦引用了所需的程序集,就可以通过选择的类的完全限定类型名或导入包含该类的命名空间来引用该类。(对该类的具体实例或静态访问) 或 您可以让一个单例类在
更清楚地说,我在某处有一个类,它使用一些代码。我还有一个类使用相同的代码。我不想重复,所以我想通过使用一些东西在两个地方调用相同的代码。在php中,我只需将(“abc.php”)包含在。。。我不想每次使用代码时都创建对象。C#中全局类的概念实际上只是引用包含该类的适当程序集的简单问题。一旦引用了所需的程序集,就可以通过选择的类的完全限定类型名或导入包含该类的命名空间来引用该类。(对该类的具体实例或静态访问) 或
您可以让一个单例类在任何地方使用它,但有些人不会建议您以这种方式继续操作。您想从任何地方访问该类还是访问该类的实例 您可以将其设置为静态类-
公共静态类MyClass{}
,也可以使用
对于最简单形式的singleton模式,您可以简单地向类(或其他一些类)添加一个静态属性,该类返回类的相同实例,如下所示:
public class MyClass
{
private static MyClass myClass;
public static MyClass MyClass
{
get { return myClass ?? (myClass = new MyClass()); }
}
private MyClass()
{
//private constructor makes it where this class can only be created by itself
}
}
其他关于使用静态类或单例模式的答案是正确的 请考虑这样做的事实,这样做确实会损害你的测试能力。通常,如果可以的话,您更喜欢依赖项注入而不是全局访问的类。我知道这并不总是可能的(或实际的)
就在这一点上,你也应该查一下。它允许您拥有一个众所周知的工厂类,该类生成您正在使用的类的实际实例。例如,要有一个全局访问的日志类,不要直接创建日志类。相反,使用日志工厂为您创建它,并将接口返回给日志类。这样可以更容易地交换不同的日志类。因为您不想每次都创建对象,而且听起来您在谈论某种实用方法 我建议您在需要时可以引用的程序集中使用