【问题标题】:How to convert IEnumerable<MySpecificEnumType> to generic IEnumerable<Enum> in WPF (C#)如何在 WPF (C#) 中将 IEnumerable<MySpecificEnumType> 转换为通用 IEnumerable<Enum>
【发布时间】:2016-06-17 18:36:53
【问题描述】:

我有一个使用组合框的用户控件,其源绑定到类型为EnumIEnumerable(我有几种不同类型的用户定义枚举要在用户控件中使用,因此请使用通用@ 987654323@ 在我的用户控件的支持代码中)。但是,当我尝试使用用户控件在项目的支持代码中创建IEnumberable 列表时,我无法将我自己的枚举类型的IEnumerable 转换为通用枚举IEnumerable

我收到以下错误:

当我尝试转换为Enum[] 时,无法将MyEnumType[] 类型的对象转换为System.Enum[] 类型。给出此错误的代码是:

public IEnumberable<Enum> MyEnums { get { return (Enum[])Enum.GetValues(typeof(MySpecificEnumType)); } }

我应该如何将我的枚举类型列表转换为通用 Enum 类型的列表?或者我应该在我的用户控件的支持代码中使用不同类型的IEnumerable

【问题讨论】:

  • 这是个坏主意。不要在用户控件中使用 generic IEnumerable&lt;T&gt;。使用非泛型 IEnumerable 作为 ComboBox 的项目源。

标签: c# wpf xaml enums


【解决方案1】:

如果你真的想得到IEnumerable&lt;Enum&gt;,可以使用Cast扩展方法:

return Enum.GetValues(typeof(MySpecificEnumType)).Cast<Enum>();

【讨论】:

  • 不会是...Cast&lt;IEnumerable&lt;Enum&gt;&gt;();吗?
  • @Zack 不,你只需指定元素的类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多