从MainWindow访问类的实例
我有一个MainWindow和另一个名为MyClass的类的应用程序。 MyClass中有一个方法,我需要从MainWindow类访问。 MyClass在应用程序加载时加载。如何调用从主窗口中MyClass的方法,而无需创建MyClass的一个新实例:从MainWindow访问类的实例
MyClass class = new MyClass();
?
的直截了当回答你的问题是,以纪念类方法,如静态的。这将允许你从任何地方调用它。
另一方面,这可能不是你真正需要的。因此,如果您在应用程序类中开始创建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();
}
}
+1在应用程序启动过程中创建一些内容和一个'static'都可以看作全局变量,但是如果你使用'static',其他地方的'MyClass'中的任何其他方法调用都将无法执行实例状态的优点。 – 2013-04-03 22:09:47
@尼克弗里曼,是的,很明显。我根据细节描述了两个不同的方法,我们从这个问题中得到了什么。 – 2013-04-03 22:12:04
这就是我正在寻找的。谢谢 – Chris 2013-04-03 22:31:04
听起来很怀疑,但是你做你在说什么,方法是将该方法static
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()
{
// ....
}
}
的代码是错误的,在MethodInMyClass声明中也需要static。我编辑它,但它被拒绝。不知道为什么。 – iltzortz 2013-04-03 22:02:33
@iltzotz是的,我纠正它。这是该职位最重要的部分。我不知道你的编辑为什么被拒绝。 – 2013-04-03 22:03:17
你在哪里创建'MyClass'的实例? ?,你能显示代码吗? – 2013-04-03 21:49:20
这也是我的怀疑。需要在MainWindow中公开我怀疑 – 2013-04-03 21:55:14