为什么我不能使用 as-cast 将 `object` 转换为枚举类型?

Why can I not use as-cast to convert `object` to an enum type?

当您实施 ICommand 时,您必须实施 public void Execute(object parameters) 方法,该方法采用 object.

类型的参数

对于我的特定应用程序,我感兴趣的是如何实现将枚举作为参数的 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 转换为我的枚举类型 State 吗?

对象参数可以转换为枚举:

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",它将传递一个字符串