FYI Aquí es un gran ejemplo de un método de enumeración de extensión que he podido utilizar. Implementa una función sensitiva a TryParse() para enumeraciones:
public static class ExtensionMethods
{
public static bool TryParse<T>(this Enum theEnum, string strType,
out T result)
{
string strTypeFixed = strType.Replace(' ', '_');
if (Enum.IsDefined(typeof(T), strTypeFixed))
{
result = (T)Enum.Parse(typeof(T), strTypeFixed, true);
return true;
}
else
{
foreach (string value in Enum.GetNames(typeof(T)))
{
if (value.Equals(strTypeFixed,
StringComparison.OrdinalIgnoreCase))
{
result = (T)Enum.Parse(typeof(T), value);
return true;
}
}
result = default(T);
return false;
}
}
}
que usaría de la siguiente manera:
public enum TestEnum
{
A,
B,
C
}
public void TestMethod(string StringOfEnum)
{
TestEnum myEnum;
myEnum.TryParse(StringOfEnum, out myEnum);
}
Éstos son los dos sitios que he visitado para ayudar a llegar a este código :
Case Insensitive TryParse for Enums
Extension methods for Enums
Los ejemplos que diste son exactamente lo que yo quiero hacer, incluso el mismo nombre. :) –
@Greg: ¿En qué idioma puede usar float y double como el tipo subyacente de una enumeración? No puede en C# - obtiene el error CS1008: escriba byte, sbyte, short, ushort, int, uint, long o ulong expected –
El único lenguaje que conozco que lo admite es CIL. En realidad no lo he probado para probarlo porque parece una idea generalmente mala, pero vea el comentario de Rico cerca de la parte inferior aquí: http://en.csharp-online.net/.NET_Type_Design_Guidelines%E2%80%94Enum_Design –