}
}
- interface A {
- [Mine ("hello")]
- void Hello ();
+ [AttributeUsage (AttributeTargets.ReturnValue)]
+ public class ReturnAttribute : Attribute {
+
+ public string name;
+
+ public ReturnAttribute (string s)
+ {
+ name = s;
+ }
+ }
+
+ public interface TestInterface {
+ void Hello ([Mine ("param")] int i);
}
public class Foo {
int i;
[Mine ("Foo")]
- [return: Mine ("Bar")]
+ [return: Return ("Bar")]
public static int Main ()
{
Type t = typeof (Foo);
Console.WriteLine ("Got more than one return attribute");
return 1;
}
- if (!(ret_attrs [0] is MineAttribute)){
+ if (!(ret_attrs [0] is ReturnAttribute)){
Console.WriteLine ("Dit not get a MineAttribute");
return 2;
}
- MineAttribute ma = (MineAttribute) ret_attrs [0];
+ ReturnAttribute ma = (ReturnAttribute) ret_attrs [0];
if (ma.name != "Bar"){
Console.WriteLine ("The return attribute is not Bar");
return 2;
}
}
+ Type ifType = typeof (TestInterface);
+
+ MethodInfo method = ifType.GetMethod ("Hello",
+ BindingFlags.Public | BindingFlags.Instance);
+
+ ParameterInfo[] parameters = method.GetParameters();
+ ParameterInfo param = parameters [0];
+
+ object[] testAttrs = param.GetCustomAttributes (true);
+
+ if (testAttrs.Length != 1)
+ return 1;
+
return 0;
}
}