为什么我不能使用 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"
,它将传递一个字符串
当您实施 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"
,它将传递一个字符串