Arbeiten an einem Projekt, wo sie viele Enums und viele duplizierte Objekte über mehrere DLLs haben. Ein Durcheinander, aber weitermachen.Enum in Enum konvertieren funktioniert nicht wenn nicht in der gleichen Reihenfolge
Ich habe diese Erweiterung Methode, die funktioniert, wenn eine Enum zu Enum Umwandlung, die die gleiche Position in der Enum hat aber es schlägt fehl, wenn der Name das gleiche ist, aber die Position der Enumeration ist anders
Wie kann verbessern mein Code, so dass es wird die richtige Enumeration auf Namensübereinstimmung basierend unabhängig davon, wo in der enum
Dank
[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);
}
}
}
EDIT
befindetEinige dlls habe ich keine Kontrolle über, so kann ich nicht Enum Ordnung
Wenn Sie die Namen anders bestellen, die Namen auf verschiedene Werte entsprechen wird, wenn Sie sie manuell zuweisen. Dies ist im Grunde, wie Enums arbeiten, und ist von Entwurf. – BoltClock
Dieses Verhalten ist nicht so überraschend, wenn Sie darüber nachdenken. Denken Sie daran, dass Sie Enum-Wert explizit in Ints und zurück konvertieren können. – McGarnagle
Ich wusste nicht, dass dies 'Director' kompiliert '(in' CategoryA'). –