Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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# Cecil-调用泛型方法的问题_C#_Mono.cecil - Fatal编程技术网

C# Cecil-调用泛型方法的问题

C# Cecil-调用泛型方法的问题,c#,mono.cecil,C#,Mono.cecil,创建指令时,我在尝试调用Nullable.Value时遇到问题。我正在做以下工作 ModuleDefinition module = ModuleDefinition.ReadModule(@"C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll"); TypeReference boolean = module.GetType("System.Boolean", true); TypeReference nullableBool

创建指令时,我在尝试调用Nullable.Value时遇到问题。我正在做以下工作

ModuleDefinition module = ModuleDefinition.ReadModule(@"C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll");

TypeReference boolean = module.GetType("System.Boolean", true);
TypeReference nullableBoolean = module.GetType("System.Nullable`1", true).MakeGenericInstanceType(boolean);
TypeDefinition typeDefinition = nullableBoolean.Resolve();

MethodDefinition get_HasValue = typeDefinition.Methods.Single(m => m.Name == "get_HasValue");
MethodDefinition get_Value = typeDefinition.Methods.Single(m => m.Name == "get_Value");
MethodReference methodReference = module.Import(get_Value);

processor.Create(OpCodes.Call, methodReference);
当我插入这些指令时,它会在ILSpy中显示以下内容,如果我尝试运行代码,它会显示“InvalidProgrammeException:Invalid IL code”

编辑

在一些混乱之后,我能够更接近它应该是什么。来自Cecil的IL与来自编译生成代码的IL匹配,但现在我得到一个错误。我将包括我正在使用的代码以及我正在编辑的内容

Unhandled Exception: System.TypeLoadException: Could not load type 'System.Nullable' from assembly due to value type mismatch.

如果您使用的VS2015@MethodMan没有帮助,请查看本文。我没有使用Fody,在我的csproject中也没有关于NotifyPropertyWeaverMsBuildTask.WeavingTask的任何内容。首先比较Mono.Cecil生成的IL和C#编译器生成的IL,看看是否有任何区别。我研究了这一点,并能够匹配编译器生成的IL,但现在我得到了一个错误。我更新了我的帖子。请你发布代码的预期结果。例如,您希望新代码看起来像什么?如果您使用的VS2015@MethodMan没有帮助,请查看本文。我没有使用Fody,在我的csproject中也没有关于NotifyPropertyWeaverMsBuildTask.WeavingTask的任何内容。首先比较Mono.Cecil生成的IL和C#编译器生成的IL,看看是否有任何区别。我研究了这一点,并能够匹配编译器生成的IL,但现在我得到了一个错误。我更新了我的帖子。请你发布代码的预期结果。例如,您希望新代码是什么样子?
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Nullable' from assembly due to value type mismatch.