如何使用 TypeConverter 将标志枚举转换为 UInt64
我有一个类,它在其构造函数中采用通用类 TState
,条件是 TState
可以使用 UInt64
转换为 UInt64
>类型转换器。然后它将被用作标志。
我想对 TState 使用 [Flags]
枚举,但即使我将其定义为
[Flags]
public enum EState : ulong
{
None = 0x0,
State1= 0x1,
State2= 0x2,
State3= 0x4
}
if TypeConverter typeConv = TypeDescriptor.GetConverter(typeof(EState)) ;
typeConv.CanConvertTo(typeof(UInt64))
为 false。
我怎样才能制作一个可以适当转换的枚举?谢谢!
I have a class which takes a generic class TState
in its constructor, under the condition that TState
can be converted to a UInt64
using a TypeConverter
. It will then be used as flags.
I want to use a [Flags]
enum for TState
, but even if I define it as
[Flags]
public enum EState : ulong
{
None = 0x0,
State1= 0x1,
State2= 0x2,
State3= 0x4
}
then if TypeConverter typeConv = TypeDescriptor.GetConverter(typeof(EState));
typeConv.CanConvertTo(typeof(UInt64))
is false.
How can I make an enum which will convert appropriately? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
Convert.ChangeType()
:然后
更新
为什么
TypeDescriptor
不起作用?根据文档:
TypeDescriptor 和 TypeConvertor 与
ExpandableObjectConverter
配合使用,而Convert
与IConvertible
配合使用。You can use
Convert.ChangeType()
:And then
UPDATE
Why
TypeDescriptor
does not work?According to docs:
TypeDescriptor and TypeConvertor work with
ExpandableObjectConverter
whileConvert
works withIConvertible
.