gpt4 book ai didi

c# - 从属性创建枚举

转载 作者:行者123 更新时间:2023-12-03 21:57:53 26 4
gpt4 key购买 nike

我用自己的实体属性标记我的枚举,用于将枚举映射到案例管理系统中的相应字段。

从枚举值中获取正确的字符串可以正常工作,但是如何从字符串生成枚举?

我开始这样做:

foreach (var fieldInfo in enumType.GetFields())
{
var attribute = (EntityNameAttribute)fieldInfo
.GetCustomAttributes(typeof (EntityNameAttribute), false)
.FirstOrDefault();

if (attribute == null)
continue;

if (attribute.Name != name)
continue;

//got a match. But now what?
}

但是如何从字段中获取正确的值?我可以使用 fieldInfo.GetValue ?如果是这样,我应该使用什么实例?枚举是否应该被视为静态类型?

最佳答案

是的,您可以使用:

object value = fieldInfo.GetValue(null);

它们实际上只是静态只读字段。请注意,这不是从字符串中获取枚举...但如果您确实需要这样做,您可以使用 Enum.Parse .

需要注意的一件事 - 如果您使用的是 .NET 3.5,则可以使用 LINQ 简化整个代码:
var values = from field in enumType.GetFields()
from EntityNameAttribute attribute in
field.GetCustomAttributes((typeof(EntityNameAttribute), false)
where attribute.Name == name
select field.GetValue(null);

(这是假设如果定义了多个正确类型的属性,您不在乎哪一个具有正确的名称,而只有一个具有正确的名称。)

关于c# - 从属性创建枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8094529/

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