代码之家  ›  专栏  ›  技术社区  ›  Amy

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

  •  7
  • Amy  · 技术社区  · 14 年前

    考虑以下事项:

    [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 回复  |  直到 14 年前
        1
  •  9
  •   Chris Taylor    14 年前

    MethodInfo有一个ReturnTypeCustomAttributes属性,如果对此调用getCustomAttributes(),则会得到返回值Attitutes。

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