如何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的对象
听起来就是这个答案