using System;
using System.Reflection;
[AttributeUsage(AttributeTargets.Parameter)]
public class MyAttribute : Attribute
{
private string myName;
public MyAttribute(string name)
{
myName = name;
}
public string Name
{
get
{
return myName;
}
}
}
[AttributeUsage(AttributeTargets.Parameter)]
public class MyDerivedAttribute : MyAttribute
{
public MyDerivedAttribute(string name) : base(name) {}
}
public class MyClass1
{
public void MyMethod(
[MyAttribute("This is an example parameter attribute")]
int i,
[MyDerivedAttribute("This is another parameter attribute")]
int j,
int k )
{
return;
}
}
public class MemberInfo_GetCustomAttributes
{
public static void Main()
{
Type myType = typeof(MyClass1);
MethodInfo[] myMethods = myType.GetMethods();
foreach (MethodInfo mi in myMethods)
{
ParameterInfo[] myParameters = mi.GetParameters();
if (myParameters.Length > 0)
{
Console.WriteLine(mi);
foreach (ParameterInfo pi in myParameters)
{
if (pi.IsDefined(typeof(MyAttribute), false))
{
Console.WriteLine(pi.Position);
Console.WriteLine(pi.Name);
Console.WriteLine(pi.ParameterType);
}
}
}
}
}
}