using System;
using System.Reflection;
[AttributeUsage(AttributeTargets.Class)]
public class ClassTarget : Attribute
{
public ClassTarget()
{
}
}
[AttributeUsage(AttributeTargets.Method )]
public class MethodTarget : Attribute
{
public MethodTarget()
{
}
}
public class MyClass
{
[MethodTarget]
public int MyMethod()
{
return 5;
}
}
class MainClass
{
public static void Main(string[] args)
{
ClassTarget rs;
MethodTarget rm;
Assembly a = Assembly.LoadFrom("MyClass");
foreach(Type t in a.GetTypes())
{
rs = (ClassTarget) Attribute.GetCustomAttribute(t, typeof(ClassTarget));
if(rs != null)
{
foreach(MethodInfo m in t.GetMethods())
{
rm = (MethodTarget) Attribute.GetCustomAttribute(m, typeof(MethodTarget));
if(rm != null)
{
Object o = Activator.CreateInstance(t);
Object[] aa = new Object[0];
int i = (int) m.Invoke(o, aa);
}
}
}
}
}
}
|