Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中使用参数创建类实例的编写方法_C#_Wpf_Methods_Parameters_Window - Fatal编程技术网

C#中使用参数创建类实例的编写方法

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)

一个基本问题:我正在编写一个C#应用程序,它有一个菜单,每个菜单项都将打开一个新窗口。这些窗口都是窗口类的实例

而不是写入:(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>();