c# - net - ¿Cómo se refleja en un atributo aplicado a un valor de retorno?
reflection c# example (1)
Considera lo siguiente:
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.ReturnValue)]
public class NotNullAttribute : Attribute
{
}
public class Class1
{
[return: NotNull]
public static string TestMethod([NotNull] string arg)
{
return arg + " + " + arg;
}
}
¿Cómo, utilizando System.Reflection, vería que el atributo NotNullAttribute se ha aplicado al valor de retorno del método? Si no puede, ¿cuál es el propósito detrás de la sintaxis [return:]?
MethodInfo tiene una propiedad ReturnTypeCustomAttributes. Si llama a GetCustomAttributes (), obtendrá los valores devueltos.
MethodInfo mi = typeof(Class1).GetMethod("TestMethod");
object[] attrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(true);