gpt4 book ai didi

c# - TypeConverter 中的 EnumValue

转载 作者:行者123 更新时间:2023-11-30 22:56:43 24 4
gpt4 key购买 nike

我有一个具有以下属性的类:

[TypeConverter(typeof(SomeNameEnumValueConvert))]
public Example ExampleName { get; set; }

在我的 Enum TypeConverter 中,我尝试从某个整数中获取 Enum 名称,因为源是从一个由字符串组成的表中读取的。

在表格中,它存储为例如“33”(所以不是名字),例如来自

public enum Example
{
Off = 1,
On = 33,
Whatever = 7
}

然后是我的转换器代码:

public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
var enumValue = Convert.ToInt32(value);
return (context.PropertyDescriptor.PropertyType) enumValue
}

但是,这里给出上下文是一个变量,不是类型。所以我尝试了各种方法来让它工作,但与此同时我会把它贴在这里,也许这样可以加快重试速度。我试过转换为 Enum、转换为 (enum)(object)、通过 GetType 进行转换、通过 Assembly 进行转换以获得特定类型,但这似乎都不起作用。因此如何转换为底层系统类型。

最佳答案

要从值中获取枚举名称(例如“On”),您可以使用 Enum.GetName:

public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
var enumValue = Convert.ToInt32(value);
return Enum.GetName(context.PropertyDescriptor.PropertyType, enumValue);
}

要从值中获取枚举成员(例如 Example.On),请使用 Enum.ToObject:

public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
var enumValue = Convert.ToInt32(value);
return Enum.ToObject(context.PropertyDescriptor.PropertyType, enumValue);
}

关于c# - TypeConverter 中的 EnumValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54193467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com