Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/vb6/2.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 Mono.Cecil导入列表枚举器_.net_Mono_Mono.cecil - Fatal编程技术网

.net Mono.Cecil导入列表枚举器

.net Mono.Cecil导入列表枚举器,.net,mono,mono.cecil,.net,Mono,Mono.cecil,我正在使用Mono.Cecil进行一些IL编织,我遇到了这个问题: Member 'System.Collections.Generic.List`1/Enumerator' is declared in another module and needs to be imported 如何导入具有列表枚举器的模块 我有一个TypeReference(System.Collections.Generic.List`1),我用它来获取枚举数,如下所示: var instanceType = (ty

我正在使用Mono.Cecil进行一些IL编织,我遇到了这个问题:

Member 'System.Collections.Generic.List`1/Enumerator' is declared in
another module and needs to be imported
如何导入具有列表枚举器的模块

我有一个
TypeReference
(System.Collections.Generic.List`1),我用它来获取枚举数,如下所示:

var instanceType = (typeReference as GenericInstanceType);
var list = instanceType.Resolve();

MethodDefinition getEnumerator;
if (!list.TryGetMethod("GetEnumerator", out getEnumerator))
    throw ...
instructions.Add(Instruction.Create(OpCodes.Callvirt, getEnumerator));
Type listType = typeof (List<>);

MethodReference getEnumerator = moduleDefinition
    .Import(listType.GetMethod("GetEnumerator"));
。。。其中,
TryGetMethod
是一个自定义扩展,用于搜索相关类型中具有该名称的方法

然后我在代码中进一步使用getEnumerator,如下所示:

var instanceType = (typeReference as GenericInstanceType);
var list = instanceType.Resolve();

MethodDefinition getEnumerator;
if (!list.TryGetMethod("GetEnumerator", out getEnumerator))
    throw ...
instructions.Add(Instruction.Create(OpCodes.Callvirt, getEnumerator));
Type listType = typeof (List<>);

MethodReference getEnumerator = moduleDefinition
    .Import(listType.GetMethod("GetEnumerator"));

我做错了什么?

我知道了。要获取列表的枚举数,需要为
GetEnumerator
方法获取
MethodReference
,如下所示:

var instanceType = (typeReference as GenericInstanceType);
var list = instanceType.Resolve();

MethodDefinition getEnumerator;
if (!list.TryGetMethod("GetEnumerator", out getEnumerator))
    throw ...
instructions.Add(Instruction.Create(OpCodes.Callvirt, getEnumerator));
Type listType = typeof (List<>);

MethodReference getEnumerator = moduleDefinition
    .Import(listType.GetMethod("GetEnumerator"));
Type listType=typeof(列表);
MethodReference getEnumerator=moduleDefinition
.Import(listType.GetMethod(“GetEnumerator”);

我想出来了。要获取列表的枚举数,需要为
GetEnumerator
方法获取
MethodReference
,如下所示:

var instanceType = (typeReference as GenericInstanceType);
var list = instanceType.Resolve();

MethodDefinition getEnumerator;
if (!list.TryGetMethod("GetEnumerator", out getEnumerator))
    throw ...
instructions.Add(Instruction.Create(OpCodes.Callvirt, getEnumerator));
Type listType = typeof (List<>);

MethodReference getEnumerator = moduleDefinition
    .Import(listType.GetMethod("GetEnumerator"));
Type listType=typeof(列表);
MethodReference getEnumerator=moduleDefinition
.Import(listType.GetMethod(“GetEnumerator”);