Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Silverlight中替换方法地址?_C#_Silverlight_Reflection_Aop - Fatal编程技术网

C# 如何在Silverlight中替换方法地址?

C# 如何在Silverlight中替换方法地址?,c#,silverlight,reflection,aop,C#,Silverlight,Reflection,Aop,我正在使用以下方法替换C#桌面应用程序中的方法地址: var destMethod = typeof(BaseViewModel).GetMethod("desc"); var srcMethod = typeof(BaseViewModel).GetMethod("src"); *((uint*)new IntPtr(((int*)destMethod.MethodHandle.Value.ToPointer() + 2)).ToPointer()) = *((uint*)new IntPtr

我正在使用以下方法替换C#桌面应用程序中的方法地址:

var destMethod = typeof(BaseViewModel).GetMethod("desc");
var srcMethod = typeof(BaseViewModel).GetMethod("src");
*((uint*)new IntPtr(((int*)destMethod.MethodHandle.Value.ToPointer() + 2)).ToPointer()) = *((uint*)new IntPtr(((int*)srcMethod.MethodHandle.Value.ToPointer() + 2)).ToPointer());
在桌面应用程序中,地址被替换后,我调用“dest”方法:

“src”方法自动处理此调用

但在Silverlight中它不起作用,当我尝试调用“dest”方法时,就不会调用“src”方法

请告知此方法是否也可用于Silverlight,以及我应如何更改以使其生效。
提前感谢。

“它不起作用”永远是不够的信息。到底发生了什么?你想达到什么目标?(“替换方法地址”并不是一个信息量很大的描述)对不起,我调整了帖子。在Silverlight中,我不能像在桌面应用程序中那样替换方法地址。因此,我希望实现运行时方法替换。现在还不清楚您为什么要这样做-看起来您最好使用一个可以有多个实现的接口,而不是对内部进行篡改。在我的情况下,这不是一个选项,我想在不更改当前代码的情况下拦截方法调用。我强烈怀疑你当时运气不好。我通常认为Silverlight更像是一个“锁定”的平台,所以我并不奇怪您在处理这样的内部构件时遇到问题。
var viewModel = new BaseViewModel();
viewModel.dest();