gpt4 book ai didi

c# - 将 XAML 窗口类型传递给函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:57 25 4
gpt4 key购买 nike

我有一个函数,旨在创建一个窗口实例并返回一个 RelayCommand(基本上,它只是一个 MVVMLite 辅助方法:

public static RelayCommand NavigateTo(Type navigateTo)
{
var relayCmd = new RelayCommand (() => Navigate(navigateTo));
return relayCmd;
}

private static void Navigate(Type navigateTo)
{
var newWin = Activator.CreateInstance(navigateTo);
((Window)newWin).Show();
}

然后我在一个单独的类中这样调用它:

this.MyCommand = Navigation.NavigateTo(View.MyView);

MyView 是一个有效的窗口,但是,我得到以下编译错误:

The best overloaded method match for 'MyProject.Navigation.NavigateTo(System.Type)' has some invalid arguments

我可以通过这样做让它工作:

this.MyCommand = Navigation.NavigateTo(typeof(View.MyView));

我的问题是:为什么?我正在传递一个类型并期待一个类型。另外,有没有办法让我的 NavigateTo 函数简单地接受窗口的类名?

最佳答案

I'm passing a type and expecting a type.

您尝试传递一个类型,但您不能在.Net 中这样做。您只能传递 System.Type 对象。您可以通过编写 typeof(MyClass) 从类中获取 System.Type 对象。您可以通过编写 obj.GetType() 从对象中获取 System.Type 对象。

您需要了解class/typeobject/instance 之间的区别。

关于c# - 将 XAML 窗口类型传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com