C#: How to create an attribute on a method triggering an event when it is invoked?

前端 未结 7 933
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-29 02:10

Is there a way in C# or .NET in general to create an attribute on a method which triggers an event when the method is invoked? Ideally, I would be able to run custom actions

7条回答
  •  臣服心动
    2020-11-29 02:17

    You need some sort of Aspect oriented framework. PostSharp will do it, as will Windsor.

    Basically, they subclass your object and override this method...

    then it becomes:

    //proxy
    public override void DoSomeStuff()
    {
         if(MethodHasTriggerAttribute)
            Trigger();
    
         _innerClass.DoSomeStuff();
    }
    

    of course all this is hidden to you. All you have to do is ask Windsor for the type, and it will do the proxying for you. The attribute becomes a (custom) facility I think in Windsor.

提交回复
热议问题