C#中使用参数创建类实例的编写方法
一个基本问题:我正在编写一个C#应用程序,它有一个菜单,每个菜单项都将打开一个新窗口。这些窗口都是窗口类的实例 而不是写入:(EditSettings是目标窗口的所需名称) 对于每一个实例,我是否可以编写一个类似下面这样的方法来创建实例C#中使用参数创建类实例的编写方法,c#,wpf,methods,parameters,window,C#,Wpf,Methods,Parameters,Window,一个基本问题:我正在编写一个C#应用程序,它有一个菜单,每个菜单项都将打开一个新窗口。这些窗口都是窗口类的实例 而不是写入:(EditSettings是目标窗口的所需名称) 对于每一个实例,我是否可以编写一个类似下面这样的方法来创建实例 private void OpenSelectedWindow(Window n) { n = new Window(); n.Show(); } 但我无法调用该方法-我尝试了: OpenSelectedWindow(EditSettings)
private void OpenSelectedWindow(Window n)
{
n = new Window();
n.Show();
}
但我无法调用该方法-我尝试了:
OpenSelectedWindow(EditSettings);
不起作用(“名称EditSettings在当前上下文中不存在”),或
这也不行
我对C#很生疏,问这个问题感觉像个傻瓜,但我似乎在互联网上找不到这样的例子。你能用一个方法创建一个类的实例吗?我缺少什么?谢谢
编辑
所有代码都发生在主命名空间中:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
// Attempting to write a method that instances the class
private void OpenSelectedWindow(Window n)
{
n = new Window();
n.Show();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
//Calling the method
OpenSelectedWindow(EditSettings);
}
}
我有两个.xaml文件-EditSettings.xaml(空)和MainWindow.xaml。您可以使用泛型:
private T OpenSelectedWindow<T>() where T : Window, new()
{
T n = new T();
n.Show();
return n;
}
private T OpenSelectedWindow(),其中T:Window,new()
{
T n=新的T();
n、 Show();
返回n;
}
使用如下方法:
EditSettings editSettingsWindow = OpenSelectedWindow<EditSettings>();
editsettingeditsettingswindow=OpenSelectedWindow();
不清楚您的方法声明在哪里,或者试图使用它的代码在哪里。此外,如果您要忽略其值,为什么要使用参数?您完全可以在方法中创建类的实例,但我怀疑这不是您真正感兴趣的。不幸的是,很难看到您正试图用它做什么stion的当前形式。抱歉,我没有意识到您需要更多代码,我将编辑和添加更多代码。它比其他任何东西都更清晰。例如,您所说的“EditSettings是目标窗口的理想名称”到底是什么意思"? 你实际上是在说创建从Window
派生的不同类型的实例,你有一个名为EditSettings
的类吗?基本上,如果我采用OpenSelectedWindow方法,并将EditSettings作为参数传递,无论它在方法中的哪个位置有“n”,我都会用“EditSettings”(像字符串一样)替换它,如果一切正常,它将创建一个名为EditSettings的新窗口。对象不会被“调用”任何东西。变量有名称,但不清楚这是否是您想要的。。。方法中的变量名与其他地方无关。如果您对设置窗口的Name
属性感兴趣,那么只需通过字符串设置该属性。我怀疑这可能是OP所追求的,是的。这个问题对我来说仍然相当不清楚,但是…同意,但是这个问题看起来很像是在OP不知道泛型和/或反射的情况下尝试这样做。
private T OpenSelectedWindow<T>() where T : Window, new()
{
T n = new T();
n.Show();
return n;
}
EditSettings editSettingsWindow = OpenSelectedWindow<EditSettings>();