有没有办法在运行时修改静态方法的行为?
例如:
说我有这门课
public class Utility {
public static void DoSomething(string data){
//...
}
}
有没有办法做这样的事情:
typeof(Utility).SetMethod("DoSomething", (data) => { /*Do something else...*/ });
如果您调用 Utility.DoSomething
它会执行新代码?
最佳答案
您要做的是将您想要的行为作为另一个参数传递给函数。
public static void DoSomething(string data, Action<string> operation)
{
operation(data);
}
当然,这是一个过于简单化的示例。您最终在自己的代码中执行的操作将取决于 operation
实际执行的操作。
如果您尝试修改现有的、编译的、生产中的方法的行为,并且不能以通常的方式重载或覆盖该方法,我知道的唯一方法是 CIL 重写,可能使用一个Aspect Weaver .
关于c# - 如何在运行时更改静态方法的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635443/