我有一个应用程序,其中我有一个采用 PropertyInfo 参数的方法,并且想从 IL 调用此方法。例如,对于采用 MethodInfo 的类似方法,我可以创建一个采用RuntimeMethodHandle的中间方法并使用GetMethodFromHandle。然后 IL 可以使用Ldtoken来传递句柄。
但是,似乎没有属性的等效元数据标记。我可以理解为什么会出现这种情况(因为属性实际上只是一种将方法捆绑在一起的方式,并且从不从 IL 中“调用”),但是肯定有与类型相关联的属性元数据。我可以在 Emit-time 访问这个属性元数据,所以我想要一种能够直接传递它的方法,而不必在运行时通过名称求助于 Reflection(即向 GetProperty 发出 Reflection 调用,获取一个将在运行时。)有没有办法做到这一点?
根据评论中的要求,这是应用程序:
我正在创建一个适配器类,它通过bool this[int index]
属性将属性引用作为其组件位公开。我的应用程序将 PLC 代码编译为 .NET 程序集,因此我正在尝试创建诊断访问器,该访问器近似于 PLC 提供的简单按位访问(您在其中写入MyTag.2
以指示 tag 的第 2 位MyTag
。)此语法不能用于由 C# 消耗,但这PLC.GetBits().MyTag[2]
是一个合理的近似值。
我最初的方法是使用 PropertyInfo 实现的(这就是我遇到这个问题的方式),但我当然可以通过将 PropertyInfo 中的适用元数据作为多个参数传递来解决它。我主要只是好奇是否可以直接传递 PropertyInfo,因为我以前从未遇到过这种情况。