Quiero hacer un atributo que permitirá mí especificar algún método aplicado a la propiedad, así:Cómo hacer referencia a un método en el parámetro atributo
public class MyClass
{
[MyAttribute(Converter="ConverterMethod")]
public string Prop { get; set; }
public static string ConverterMethod(string src)
{
return src + " converted";
}
}
¿Cuál es la manera 'correcta' de hacer eso?
Estas son las formas que veo: propiedad de cadena
- Marca y método correspondiente extracto con la reflexión en tiempo de ejecución
- Hacer
Dictionary<string, Func<string, string>>
y rellenarla con los métodos correspondientes durante el tiempo de ejecución. A continuación, extraiga el método utilizando la propiedad de cadena del atributo como clave. Este método es más resistente a la refactorización, si cambio el nombre del método todo funcionará (la clave del diccionario seguirá siendo la misma) - Haga la interfaz 'IConverter' y pase
typeof(ConverterImpl)
al atributo. Luego, cree una instancia de convertidor durante el tiempo de ejecución y use su interfaz para convertir valores. De esta manera me parece lo mejor, pero nunca utilicé las propiedadesType
en los atributos y ni siquiera sé si están bien serializadas.
¿Qué enfoque es el mejor? ¿Hay otros enfoques? ¿Cómo la gente suele hacer tales cosas?