C# 动态方法调用

C# 动态方法调用,c#,dynamic,methods,C#,Dynamic,Methods,我有两个简单的课程: public class A { public void DoSomething(); } public class Listener { public void OnDoSomethingCalled(); } 我希望每次调用.DoSomething()时都自动调用Listener.OnDoSomethingCalled()。我希望在不更改类A的情况下执行此操作。我不希望在中添加委托并将侦听器附加到该委托。想象一下我没有类A的源代码的场景 我不能在这里

我有两个简单的课程:

public class A
{
    public void DoSomething();
}

public class Listener
{
    public void OnDoSomethingCalled();
}
我希望每次调用.DoSomething()时都自动调用Listener.OnDoSomethingCalled()。我希望在不更改类A的情况下执行此操作。我不希望在中添加委托并将侦听器附加到该委托。想象一下我没有类A的源代码的场景


我不能在这里使用装饰模式,因为我不能修改调用A.DoSomething()的代码。我读过一些关于Reflection.Emit或DynamicMethod的文章,它们可以在运行时动态更改或定义一个方法。它能在这里应用吗?如何应用

您可以尝试使用类似的东西进行面向方面编程,我认为这应该可以解决这个问题(它重写了CIL)。

我假设您不能修改类?但是我必须将属性添加到我想要附加到的类中。我认为这实际上只是一个使用属性的装饰模式实现,所以我认为它对我来说不起作用。如果可以更改,您可以向程序集添加一些内容,例如,“[assembly:Trace(“MyCategory”,AttributeTargetTypes=“My.BusinessLayer.*”]””