Tengo un método con un atributo personalizado. Si tengo un delegado que se refiere a este método, ¿puedo decir si el método al que hace referencia el delegado tiene el atributo o no?¿Cómo interrogar los atributos del método a través de un delegado?
6
A
Respuesta
2
No estoy seguro de si este es el caso general, pero creo que sí. Pruebe lo siguiente:
class Program
{
static void Main(string[] args)
{
// display the custom attributes on our method
Type t = typeof(Program);
foreach (object obj in t.GetMethod("Method").GetCustomAttributes(false))
{
Console.WriteLine(obj.GetType().ToString());
}
// display the custom attributes on our delegate
Action d = new Action(Method);
foreach (object obj in d.Method.GetCustomAttributes(false))
{
Console.WriteLine(obj.GetType().ToString());
}
}
[CustomAttr]
public static void Method()
{
}
}
public class CustomAttrAttribute : Attribute
{
}
3
utilizan el método de la propiedad Method
del delegado GetCustomAttributes
. He aquí una muestra:
delegate void Del();
[STAThread]
static void Main()
{
Del d = new Del(TestMethod);
var v = d.Method.GetCustomAttributes(typeof(ObsoleteAttribute), false);
bool hasAttribute = v.Length > 0;
}
[Obsolete]
public static void TestMethod()
{
}
Si el método tiene el atributo de la var v contendrá ella; de lo contrario, será una matriz vacía.
+0
Gracias por la respuesta rápida – djp
Cuestiones relacionadas
- 1. Enrutamiento ASP.NET MVC A través de los atributos del método
- 2. ¿Cómo funcionan los atributos del método Perl?
- 3. Agregar elementos a un objeto a través del método .push()
- 4. Cómo recuperar los atributos del método de acción solicitado
- 5. Iterar a través de los parámetros del método
- 6. ¿Cómo poner atributos a través de XElement
- 7. Asignación de un método IronPython a un C# delegado
- 8. Cómo convertir un delegado a un delegado idéntico?
- 9. C# delegado y atributos pregunta sintaxis
- 10. Rails anidados con has_many: a través de, ¿cómo editar los atributos del modelo join?
- 11. Actualizar los atributos del modelo
- 12. Delegado: Nombre del método error esperado
- 13. Pasar un método de extensión a un método que espera un delegado. ¿Como funciona esto?
- 14. ¿Cómo iterar a través de todos los atributos en un elemento HTML?
- 15. llamar a los métodos de delegado opcionales
- 16. a través de múltiples atributos en XML
- 17. ¿Cómo enviamos datos a través del método GET?
- 18. Convierta este delegado a un método anónimo o lambda
- 19. ¿Cómo establecer un diseño Razor en MVC a través de un filtro de atributos?
- 20. ¿Qué método de delegado debería usar para responder a los clics en un NSTextField?
- 21. ¿Atributos del método falso en PHP?
- 22. El uso del delegado
- 23. ¿Cómo puedo pasar un método adquirido por reflexión en C# a un método que acepta el método como delegado?
- 24. Llamar a un método del lado del servidor ASP.NET a través de jQuery
- 25. ASP.NET Intellisense frente a los atributos del lado del cliente
- 26. Invoke() y BeginInvoke() comportándose de manera diferente al ejecutar un método sobrescribible a través de un delegado
- 27. ¿hay un método delegado uipickerview como scrollviewDidScroll?
- 28. la conversión de un grupo método de extensión a un delegado con un tipo genérico
- 29. Creación de un tipo de delegado dentro de un método
- 30. Obtener el nombre del método de delegado con WinDbg
Gracias por la respuesta rápida – djp