c# - sharp - sentencia return java
¿Cómo encuentro el tipo de retorno de un método con System.Reflection.MethodBase en C#? (4)
¿Cómo puedo averiguar el tipo de retorno de un método de la Base de métodos? Estoy usando PostSharp e intento anular el método CompileTimeValidate (método MethodBase) para asegurarme de que el atributo se aplique a un método con la firma correcta.
Gracias,
Intenta algo como esto. MethodInfo
tiene la propiedad pero MethodBase
se usa para los constructores, y no tienen un tipo de retorno.
MethodBase b = this.GetType().GetMethods().First();
if(b is MethodInfo)
MessageBox.Show((b as MethodInfo).ReturnType.Name);
Pruebe la propiedad MethodInfo.ReturnType
.
Para obtener la propiedad de tipo de retorno, primero obtenga el Type
. Desde el Type
, obtenga el MethodInfo
. Desde MethodInfo
, obtenga el ReturnType
.
Parece que no puedes hacerlo con MethodBase ...
MethodBase
sí no tiene un tipo de retorno porque, además de los métodos normales, también se utiliza para representar métodos, como los constructores, que no tienen ningún tipo de retorno. En su lugar, debe ver si es una instancia de MethodInfo
y verificar que no haya ReturnType
propiedad ReturnType
.
CompileTimeValidate(MethodBase method) {
var normalMethod = method as MethodInfo;
if( normalMethod != null) {
ValidateReturnType(normalMethod.ReturnType);
}
}
MethodBase se utiliza como una clase base de MethodInfo que tiene una propiedad ReturnType .
Puede probar y convertir a una instancia de MethodInfo y verificar esa propiedad.