no he leído la pregunta con cuidado, por lo que mi código no funcionará en C# 1.0, ya que utiliza los genéricos. Mejor uso con> = C# 4.0 (> = VS2010)
Para hacer la vida más fácil, he creado este servicio de ayuda.
El uso del servicio es la siguiente:
// create an instance of the service (or resolve it using DI)
var svc = new EnumHelperService();
// call the MapEnumToDictionary method (replace TestEnum1 with your enum)
var result = svc.MapEnumToDictionary<TestEnum1>();
El código de servicio es el siguiente:
/// <summary>
/// This service provides helper methods for enums.
/// </summary>
public interface IEnumHelperService
{
/// <summary>
/// Maps the enum to dictionary.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
Dictionary<int, string> MapEnumToDictionary<T>();
}
/// <summary>
/// This service provides helper methods for enums.
/// </summary>
/// <seealso cref="Panviva.Status.Probe.Lib.Services.IEnumHelperService" />
public class EnumHelperService : IEnumHelperService
{
/// <summary>
/// Initializes a new instance of the <see cref="EnumHelperService"/> class.
/// </summary>
public EnumHelperService()
{
}
/// <summary>
/// Maps the enum to dictionary.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
/// <exception cref="System.ArgumentException">T must be an enumerated type</exception>
public Dictionary<int, string> MapEnumToDictionary<T>()
{
// Ensure T is an enumerator
if (!typeof(T).IsEnum)
{
throw new ArgumentException("T must be an enumerator type.");
}
// Return Enumertator as a Dictionary
return Enum.GetValues(typeof(T)).Cast<T>().ToDictionary(i => (int)Convert.ChangeType(i, i.GetType()), t => t.ToString());
}
}
Gracias. Acabo de terminar la escuela. Aprendí C#. Seguiré tu consejo, señor. – user193276
Si quiero mejorar mi diseño (estilo de codificación) ¿debo enviar mi trabajo y solicitar opinión o solo se permite q & a simple en este foro? – user193276
Bueno, las preguntas y respuestas específicas son ideales, pero las preguntas relacionadas con * pequeñas * piezas de código en términos de diseño, claridad, etc. están bien. Simplemente no envíe miles de líneas de código en una pregunta :) También ayuda si sus ejemplos son cortos y completos, en lugar de solo ser parte de un gran proyecto. –