C# 从主窗口访问类的实例
我有一个带有MainWindow的应用程序和另一个名为MyClass的类。MyClass中有一个我需要从MainWindow类访问的方法。MyClass在应用程序加载时加载。如何从MainWindow调用MyClass中的方法而不创建MyClass的新实例:C# 从主窗口访问类的实例,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我有一个带有MainWindow的应用程序和另一个名为MyClass的类。MyClass中有一个我需要从MainWindow类访问的方法。MyClass在应用程序加载时加载。如何从MainWindow调用MyClass中的方法而不创建MyClass的新实例: MyClass class = new MyClass(); ?听起来很可疑,但是你要做的就是让这个方法是静态的 public partial class MainWindow { public void MethodInMain
MyClass class = new MyClass();
?听起来很可疑,但是你要做的就是让这个方法
是静态的
public partial class MainWindow
{
public void MethodInMainWindow()
{
// Don't need to create a new instance of MyClass
MyClass.MethodInMyClass();
}
}
public class MyClass
{
public static void MethodInMyClass()
{
// ....
}
}
对您的问题的直接回答是将类方法标记为静态。这将允许您在任何地方调用它 另一方面,这可能不是你真正需要的。因此,如果在应用程序类内部的应用程序开始时创建
MyClass
,则需要公开MyClass
实例,例如,通过应用程序属性。请看示例代码
public class MyClass
{
public void Method()
{
// ...
}
}
应用程序的代码:
public partial class App
{
public MyClass MyClassInstance { get; private set; }
private void Application_Startup(object sender, StartupEventArgs e)
{
MyClassInstance = new MyClass();
}
}
以及调用类的方法的窗口的代码:
public partial class MainWindow : Window
{
private void Button_Click(object sender, RoutedEventArgs e)
{
((App)Application.Current).MyClassInstance.Method();
}
}
你在哪里创建了
MyClass
?,你能展示一下代码吗?这也是我的怀疑。需要在主窗口中是公共的,我怀疑代码是错误的,需要在MethodInMyClass声明中也是静态的。我编辑了它,但被拒绝了。不知道为什么。@iltzotz是的,我改正了。这是这篇文章最重要的部分。我不知道您的编辑被拒绝的原因。+1在应用程序启动时创建一些东西和静态
都可以被视为全局变量,但是如果您在MyClass
中使用static
对该方法的任何其他调用都无法利用实例状态。@NickFreeman,是的,这是显而易见的。我根据问题的细节描述了两种不同的方法。这就是我想要的。谢谢