2
工作在一个项目中,他们在多个dll中有很多枚举和大量重复对象。 混乱,但让我们继续前进。将enum转换为枚举时不能工作
我有转换的枚举到枚举具有在枚举 同一位置时的工作原理是扩展方法但是如果名字是一样的,但枚举的位置不同,它失败
怎样改进我的代码,以便它获取基于名称匹配,无论正确的枚举,其中位于枚举
感谢
[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我没有控制权,所以我不能改变枚举为了
如果不同的订购名称,这些名称将对应不同的值,除非你手动分配。这基本上是枚举如何工作的,并且是通过设计的。 – BoltClock 2012-03-30 08:04:37
这种行为在您考虑时并不令人意外。请记住,您可以显式将Enum值转换为Ints并返回。 – McGarnagle 2012-03-30 08:06:34
我不知道这个编译'Director,'(在'CategoryA'中)。 – 2012-03-30 08:07:41