gpt4 book ai didi

c# - 访问 System.Collections.Generic.List 上的属性

转载 作者:太空狗 更新时间:2023-10-29 21:50:45 24 4
gpt4 key购买 nike

使用 Mono.Cecil 我可以遍历 System.Collections.Generic.List 上的字段(_items_size_version 等),但是如果我尝试使用它们,我总是会遇到异常

Member 'T[] System.Collections.Generic.List`1::_items' is declared in another module and needs to be imported

我有两个问题:

  1. 是否无法访问泛型的基础字段?
  2. 如果可能的话,导入语句应该是什么样子的?

我已经成功访问​​了对象的私有(private)成员(只要它们不是编译器生成的),所以我假设 (1) 没问题。我也成功地导入了一些东西,尽管我承认我对导入工作原理的理解是不稳定的(也就是“如果出现错误,请尝试导入它”)。

最佳答案

在编写指向它的 IL 之前,您需要将 FieldDefinition 导入 ModuleDefinition。

所以在查看您的代码后,它会是这样的。

var fieldReference = ModuleDefinition.Import(field);
Action<Collection<Instruction>> load = collection => collection.AddI(OpCodes.Ldfld, fieldReference);

我还注意到您还有另一个错误。当您在上面的代码中时,您已经丢失了类型参数的上下文。所以你正试图在 List<T> 上打电话而不是像 List<MyClass> 这样的东西.但是如果你不能解决那个问题,你可以提出另一个 SO 问题 :)

关于c# - 访问 System.Collections.Generic.List 上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com