6.3.2 方法屬性using System;
using System.Reflection;
namespace MethodAttribs
{
public class TransactionableAttribute : Attribute
{
public TransactionableAttribute()
{
}
}
class SomeClass
{
[Transactionable]
public void Foo()
{}
public void Bar()
{}
[Transactionable]
public void Goo()
{}
}
class Test
{
[STAThread]
static void Main(string[] args)
{
Type type = Type.GetType("MethodAttribs.SomeClass");
foreach(MethodInfo method in type.GetMethods())
{
foreach(Attribute attr in method.GetCustomAttributes(true))
{
if(attr is TransactionableAttribute)
{
Console.WriteLine(("{0} is transactionable."),method.Name);
}
}
}
}
}
}
與前一節的例子不同,如果一個類在一個名稱空間中(即使是當前名稱空間),就必須完全限定它:
Type type = Type.GetType(“MethodAttribs.SomeClass“);
然後使用Tyep.GetMethods方法來擷取MethodInfo對象的數組。再用foreach遍曆。
有了MethodInfo對象,就可以使用MethodInfo.GetCustomAttributes方法來擷取這個方法的所有使用者定義屬性。
接下來的語句如前一個例子,不再多說了。