gpt4 book ai didi

c# - 当顺序不同时,将枚举转换为枚举不起作用

转载 作者:行者123 更新时间:2023-11-30 20:06:20 26 4
gpt4 key购买 nike

在一个项目中,他们在多个 dll 中有大量枚举和大量重复对象。 一团糟,但让我们继续前进。

我有这个扩展方法,在将枚举转换为在枚举中具有相同位置的枚举时有效 但是,如果名称相同但枚举的位置不同,则失败

如何改进我的代码,使其根据名称匹配获得正确的枚举,而不管枚举位于枚举中的何处

谢谢

    [TestClass]
public class UnitTest1
{
[TestMethod]
public void ToEnum_convert_returnsCorrectEnum()
{
const CategoryA categoryALawyer = CategoryA.Lawyer;
var result = categoryALawyer.ToEnum<CategoryB>();

Assert.AreEqual(CategoryA.Lawyer.ToString(),result.ToString());
}
}


namespace Utilities
{
public enum CategoryA
{
Lawyer,
Developer,
Manager,
Employee,
Director,

}

public enum CategoryB
{
Director,
Manager,
Developer,
Employee,
Lawyer
}

public static class EnumExtensions
{
public static T ToEnum<T>(this Enum value)
{
return (T)Enum.ToObject(typeof(T), value);
}
}
}

编辑

有些 dll 我无法控制,所以我无法更改枚举顺序

最佳答案

T val;
if (Enum.TryParse<T>(value.ToString(), out val))
return val;
else return default(T);

编辑:将“Parse”更改为正确的“TryParse”。此外,如果需要,TryParse 方法有一个重载以使其不区分大小写:

Enum.TryParse<T>(value.ToString(), true, out val)

关于c# - 当顺序不同时,将枚举转换为枚举不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939116/

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