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) ☑