您如何反映应用于返回值的属性?

时间:2010-04-15 19:16:58

标签: c# reflection attributes postsharp

请考虑以下事项:

[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.ReturnValue)]
public class NotNullAttribute : Attribute
{
}

public class Class1
{
    [return: NotNull]
    public static string TestMethod([NotNull] string arg)
    {
        return arg + " + " + arg;
    }
}

如何使用System.Reflection,您是否会看到NotNullAttribute属性已应用于方法的返回值?如果你不能,那么[return:]语法背后的目的是什么?

1 个答案:

答案 0 :(得分:9)

MethodInfo有一个ReturnTypeCustomAttributes属性,如果你在其上调用GetCustomAttributes(),你会得到atrtibutes的返回值。

MethodInfo mi = typeof(Class1).GetMethod("TestMethod");
object[] attrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(true);