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

时间:2014-03-31 08:30:29

标签: c# wpf methods parameters window

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

而不是写:( EditSettings是目标窗口的所需名称)

Window EditSettings = new Window();
EditSettings.Show();

对于每一个,我是否可以编写类似下面的方法来创建实例?

private void OpenSelectedWindow(Window n)
{
    n = new Window();
    n.Show();
}

我无法调用该方法 - 我尝试过:

OpenSelectedWindow(EditSettings);

哪个不起作用("名称EditSettings在当前上下文中不存在'),或

OpenSelectedWindow(Window 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。

1 个答案:

答案 0 :(得分:1)

您可以使用泛型:

private T OpenSelectedWindow<T>() where T : Window, new()
{
    T n = new T();
    n.Show();
    return n;
}

使用如下方法:

EditSettings editSettingsWindow = OpenSelectedWindow<EditSettings>();