Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
.net 通过反射进入正在调用的dll的源_.net_Reflection_Reflector - Fatal编程技术网

.net 通过反射进入正在调用的dll的源

.net 通过反射进入正在调用的dll的源,.net,reflection,reflector,.net,Reflection,Reflector,我试图通过反射调用.dll的方法,但得到一个targetInvestment异常。该场景的工作原理如下:我有一个名为Labor.dll的dll。它包含多个文件,其中包括Demand.cs和Role.cs。我可以成功地单步执行Demand.cs中定义的函数,但每当我尝试单步执行Role.cs中定义的函数时,我都会收到TargetInvocationException。但是,我不应该认为这个错误发生在Role.cs方法中,因此.Net可以找到该方法并从中执行,它只是不告诉我它在做什么 如何进入Rol

我试图通过反射调用.dll的方法,但得到一个targetInvestment异常。该场景的工作原理如下:我有一个名为Labor.dll的dll。它包含多个文件,其中包括Demand.cs和Role.cs。我可以成功地单步执行Demand.cs中定义的函数,但每当我尝试单步执行Role.cs中定义的函数时,我都会收到TargetInvocationException。但是,我不应该认为这个错误发生在Role.cs方法中,因此.Net可以找到该方法并从中执行,它只是不告诉我它在做什么

如何进入Role.cs中定义的方法,或者什么会阻止我查看该代码

额外资料:

正在通过反射加载和调用Labor.dll。 当我在Labor.dll上使用reflector时,我可以查看Role.cs中定义的方法 Role.cs中的方法在执行我认为不应该执行的代码时抛出了一个错误,这就是为什么我更关注单步执行代码,而不是防止targetInvestment异常
在修改了这段代码一段时间后,我相信我找到了错误的原因

当您使用reflection.net时,似乎会在执行这些方法之前尝试验证方法签名。当您加载包含无效方法调用的方法时,似乎会发生这种情况。因此,我无法进入Role.cs,因为.net将尝试验证在我调用的方法中定义的无效方法签名。通过注释掉无效的方法调用并重新编译dll,我能够成功地进入Role.cs代码

底线是:

好的,在通过反射调用的.dll中不能有无效的方法签名。加载使用无效方法的代码时,.net将发现错误并引发异常,即使该代码永远不会在从不返回true的if语句中执行