使用 Mono.Cecil 从 ByReferenceType 获取通用参数
我有一个获取参数的方法,例如:
public void Foo(ref Action<string> bar);
使用 Cecil 枚举参数会产生 ByReferenceType。调用 GetElementType() 尝试取消引用参数会返回带有全名的 TypeReference:
System.Action`1
不知何故,它丢失了通用参数,并且不再是 GenericInstanceType。
如何正确取消引用 byref 参数并获取实际的泛型实例类型?
I have a method which gets a parameter such as:
public void Foo(ref Action<string> bar);
Using Cecil to enumerate the parameters yields a ByReferenceType. Calling GetElementType() in an attempt to dereference the parameter returns a TypeReference with fullname:
System.Action`1
Somehow it has lost the generic parameters, and is no longer a GenericInstanceType.
How can I properly dereference the byref parameter, and get to the actual generic instance type?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用它深入了解 TypeSpec(当然,当您知道自己在做什么时,您可以将其缩短):
GetElementType 方法返回构造 TypeSpec 的原始元素类型。
You can dive into the TypeSpec using this (you can of course make it shorter when you know what you're after):
The GetElementType method returns the original element type from which the TypeSpec is constructed.