Pregunta

Utilizando la reflexión para obtener un MethodInfo, quiero probar si el tipo devuelto es typeof System.Void.

Prueba si es System.Int32 funciona bien

 myMethodInfo.ReturnType == typeof(System.Int32)

pero

 myMethodInfo.ReturnType == typeof(System.Void)

no se compila? Actualmente estoy probando si la representación de cadena del nombre es & Quot; System.Void & Quot; lo que parece muy mal.

¿Fue útil?

Solución

No puede usar System.Void directamente, pero puede acceder usando typeof(void).

Varias personas señalan ( aquí y en los comentarios aquí por ejemplo) que la razón de esto es que Norma 335 de ECMA , Partición II, sección 9.4 dice:

  

Los siguientes tipos de tipos no pueden ser   utilizado como argumentos en instancias   (de tipos o métodos genéricos):

     
      
  • Tipos de byref (p. ej., System.Generic.Collection.List 1<string&>   es inválido)
  •   
  • Tipos de valor que contienen campos que pueden apuntar a CIL   pila de evaluación (por ejemplo, List<System.RuntimeArgumentHandle>)
  •   
  • nulo (por ejemplo, List<System.Void> no es válido)
  •   

Otros consejos

Cuando construyo esto, aparece el error:

  

System.Void no se puede usar desde C # - use typeof (void) para obtener el objeto de tipo void

Parece que esa es la respuesta ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top