为什么我不能使用as-cast转换'对象'到枚举类型?



当您实现ICommand时,您必须实现public void Execute(object parameters)方法,该方法采用object类型的参数。

对于我的特定应用程序,我感兴趣的是如何实现一个以enum为参数的ICommand

在我的命令中,我像这样实现Execute:
public void Execute(object parameter)
{
if (parameter is null) throw new ArgumentNullException("parameter");
State s = parameter as State;
}

其中State是定义为

的枚举类型
public enum State
{
NeutralState,
MeasureCircleState,
MeasureSphereState  
}

不幸的是,我的IDE标记我的代码,特别是行State s = parameter as State;无效

我的代码有什么问题?
我不能将我的object parameter转换为我的enum类型State吗?

对象参数可转换为enum:

public void Execute(object parameter)
{
if (parameter is State s)
{
// do work;
}
else
{
throw new ArgumentException(nameof(parameter));
}
}

你也应该正确地从XAML传递,例如:

CommandParameter="{x:Static local:State.NeutralState}"

而不仅仅是CommandParameter="NeutralState",后者将传递字符串

最新更新