8
public abstract class BaseAspectAttribute : Attribute
{    
    protected internal virtual void OnMethodBeforeExecuting(object args)
    {
        Console.WriteLine("Base Attribute OnMethodBeforeExecuting Work");
    }
}

public class LogAttribute : BaseAspectAttribute
{
    protected override void OnMethodBeforeExecuting(object args)
    {
        Console.WriteLine("Log Attribute OnMethodBeforeExecuting Work");
    }
}

LogAttribute でメソッドを取得してみます =>

object[] customAttributesOnMethod  = methodInfo.GetCustomAttributes(typeof (BaseAspectAttribute), true);
foreach (object attribute in customAttributesOnMethod)
{
    MethodInfo[] methodsInSelectedAttribute = attribute.GetType().GetMethods();
}

LogAttributeで保護されたオーバーライドメソッドを取得するには?

4

1 に答える 1

17

GetMethodsを受け入れるオーバーロードを呼び出しますBindingFlags。次のようなことを試してください:

attribute.GetType().GetMethods(BindingFlags.Instance | BindingFlags.NonPublic);

http://msdn.microsoft.com/en-us/library/4d848zkb.aspxを参照してください。

于 2014-07-29T17:03:32.877 に答える