visual tipos programacion objetos dinamicos dinamico dinamica datos crear arreglos c# properties attributes browsable

tipos - programacion dinamica c#



Argumentos de atributos dinámicos de C# (3)

Para el tiempo de ejecución, creo que probablemente estés viendo ICustomTypeDescriptor. Si fuera una decisión de tiempo de compilación, podría haber usado directivas de compilación:

#define ISBROWSABLE #if ISBROWSABLE [your attribute] #endif

¿Hay alguna manera de hacer lo siguiente? Veo que los Argumentos de los Atributos deben ser una expresión constante, entonces, ¿cómo voy a solucionar esto? Si no quiero cargar algunas propiedades en una vista de cuadrícula de datos usando enlace, ¿cuál es la siguiente mejor alternativa?

class TestObj { private bool isBrowsable = false; [Browsable(isBrowsable)] public string String1 { get { return "Foo"; } } [Browsable(isBrowsable)] public string String2 { get { return "Baz"; } } }


Puede proporcionar información dinámica de tipo personalizado en tiempo de ejecución mediante la implementación de la interfaz ICustomTypeDescriptor , pero esto es bastante trabajo, no tan simple como decorar propiedades con atributos.


Puede cargar el valor de algún archivo de configuración o base de datos utilizando un enfoque similar a Cómo establecer el valor dinámico en mi Atributo pasando los nombres de clase y propiedad, por ejemplo

[IsBrowsable ("nombre de clase", "nombre de propiedad")]

Sin embargo, será molesto escribir como nombres de cadena, que son obvios y de alguna manera deberían poder determinarse a partir de la reflexión. Puedes intentar con nosotros las herramientas de IL Weaver, como PostSharp o Fody. (Creo que son capaces de hacer tales ideas, pero no tienen un ejemplo justo ahora) ☑