Estoy creando una clase de búsqueda por lo que se usará un valor constante en todos los proyectos. El problema es que hay varias soluciones para crear tal cosa. Podría crear una sola clase con enumeraciones, estructuras o constantes o crear una sola clase para cada 'objeto'. Me pregunto cuál sería la mejor solución.Clase de búsqueda use enum, struct, public const, algo más?
principio pensé hacer algo como esto:
public static class Defines
{
public enum PAGELAYOUT_NAMES
{
STANDARD = "Standard"
}
}
Pero personalmente no me gusta el uso de cadenas en las enumeraciones tanto. Otra opción sería utilizar una estructura, que es aún más feo si ve el código:
public static class Defines
{
public struct PAGELAYOUT_NAMES
{
public static string STANDAARD = "Standaard";
}
}
Esto se ve un poco mejor, pero podría ser confuso cuando se tiene una gran cantidad de opciones:
public static class Defines
{
public const string PAGELAYOUT_NAMES_STANDARD = "Standard";
}
al escribir este post, creo que esto va a ser la mejor opción/limpia:
public static class PageLayout
{
public const string STANDARD = "Standard";
}
¿Alguna otra sugerencia? Rellenar el proyecto con varias clases que solo definen algunas constantes me parece una gran cantidad de sobrecarga y desorden.
Editar No estaba muy claro en el contexto original, pero los valores de búsqueda no están limitados a solo cadenas. Algunas sugerencias muy buenas a continuación solo son posibles si solo se utilizan cadenas, pero también se deben admitir Int, DateTime y otros tipos. Tengo algunas buenas ideas de las respuestas aquí, voy a probar cuál funcionará mejor en mi proyecto actual.
solución final implementado Gracias a las sugerencias a continuación, he implementado las clases de consulta como esta:
internal class Base<T>
{
internal T Value{ get; private set;}
internal Base(T value)
{
Value = value;
}
}
public class PageLayout
{
public static string Standard { get { return new Base<string>("Standard").Value; } }
}
Esto se basa en una respuesta dada a continuación. La razón es porque ahora puedo usar esto para no-cuerdas & enteros también, que en realidad no es posible con una enumeración con una descripción y un archivo de recursos, a pesar de que se sentiría más limpio para mí.
Aunque me gusta la limpieza de Iain Galloway su sugerencia, la he implementado porque también puede agregar valores enteros y sin cadena, como Guids, DateTime, etc. –