首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能使用角色转换来将“`object`”转换为枚举类型?

为什么我不能使用角色转换来将“`object`”转换为枚举类型?
EN

Stack Overflow用户
提问于 2022-05-20 10:14:11
回答 1查看 70关注 0票数 -2

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

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

在我的命令中,我像这样实现了Execute

代码语言:javascript
复制
public void Execute(object parameter)
{
  if (parameter is null) throw new ArgumentNullException("parameter");
  State s = parameter as State;
  }

其中,State是定义为

代码语言:javascript
复制
public enum State
{
  NeutralState,
  MeasureCircleState,
  MeasureSphereState  
}

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

我的密码怎么了?

我可以不把我的object parameter转换成枚举类型的State吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 11:09:10

对象参数可以转换为enum:

代码语言:javascript
复制
public void Execute(object parameter)
{
    if (parameter is State s)
    {
       // do work;
    }
    else
    {
         throw new ArgumentException(nameof(parameter));
    }
}

您还应该从XAML正确地传递它,例如:

代码语言:javascript
复制
CommandParameter="{x:Static local:State.NeutralState}"

而不仅仅是CommandParameter="NeutralState",它将传递一个字符串

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72317192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档