如何testingMethodInfo.ReturnType是否是System.Void的types?

使用reflection来获得一个MethodInfo,我想testing返回的types是typeof System.Void。

testing它是否是System.Int32正常工作

myMethodInfo.ReturnType == typeof(System.Int32) 

  myMethodInfo.ReturnType == typeof(System.Void) 

不编译? 目前我正在testing如果名称的string表示是“System.Void”,这似乎是非常错误的。

您不能直接使用System.Void ,但可以使用typeof(void)来访问它。

有几个人指出( 这里和这里的意见),原因是ECMA标准335分区II第9.4节说:

以下types的types不能用作实例化(genericstypes或方法)中的参数:

  • Byreftypes(例如, System.Generic.Collection.List 1<string&>无效)
  • 包含可以指向CIL评估堆栈的字段的值types(例如List<System.RuntimeArgumentHandle>
  • void(例如, List<System.Void>无效)

当我build立这个,我得到的错误:

System.Void不能从C#中使用 – 使用typeof(void)来获得voidtypes的对象

听起来就是这个答案