如何识别返回和/或接受动态类型的成员

问题描述

是否有可能确定成员的返回类型或参数类型为dynamic?问题是编译到System.Object

我观察到,如果接受参数的成员在其签名中具有dynamic类型,则会添加一个附加参数A_0

enter image description here

是否还有其他技巧可以通过反射来确定类型为dynamic

我正在使用dnlib作为反射库。该解决方案应适用于所有dotnet平台。但是,如果仅限于.NET Core,那就没问题了。

我正在处理的项目是C#库的Markdown文档生成器-您可以here找到它。

谢谢您的任何建议。

更新

识别不属于泛型类型参数的类型很简单。

如果返回类型是动态的,则方法/属性获取器/属性设置器/委托/事件加法器在其签名中将具有一个称为A_0的附加参数。

如果参数是动态的,则它将使用自定义属性System.Runtime.CompilerServices.DynamicAttribute修饰。

但是,如果动态类型是某个通用类型(Dictionary<object,dynamic>)的参数,则将不会使用上面的custom属性来修饰任何通用参数类型。如果给定的泛型类型由成员返回,则其他参数将出现在成员签名中。如果泛型类型是一个参数,则将使用自定义属性进行修饰。

仅当泛型类型仅具有一个参数或没有其他object类型参数时,才能可靠地使用这些指示符:

  • <object,dynamic> 不好
  • <int,dynamic> 确定
  • <dynamic> 确定

附加参数或定制属性均未指示哪个通用参数是动态的。

到目前为止,我没有找到解决此问题的方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)