Colección de citas famosas - Slogan de motivación - Funciones con parámetros de salida en la firma de reflexión de C#

Funciones con parámetros de salida en la firma de reflexión de C#

Type.GetMethod puede obtener un objeto MethodInfo. El objeto MethodInfo tiene un método llamado GetParameters, que es para obtener la matriz ParameterInfo. El objeto ParameterInfo tiene una propiedad llamada IsOut.

¿Conoces el prototipo de función de foo? Si se conoce, puede utilizar la sobrecarga GetMethod(string, Type[]).

Por ejemplo, mencionaste una clase de este tipo:

clase a

{

public void foo(valor de cadena);< / p>

public void foo(out string value);

}

Si desea obtener el método anterior, utilice esta declaración:

1

type.GetMethod("foo", new Type[] { typeof(string) });

Si desea obtener el siguiente método, utilice esta declaración:

1

type.GetMethod("foo", new Type[] { typeof(string).MakeByRefType() });

1 clase Programa

2 {

3 static void Main(string[] args)

4 {

5

string content = " main "; //#1 variable

6 MethodInfo testMethod = typeof(Program).GetMethod("TestMethod",

7 BindingFlags.Static | BindingFlags.NonPublic);

8 if (testMethod != null)

9 {

10 // El siguiente método no puede recuperar el contenido.

11 //< / p>

12 testMethod.Invoke(null, new object[] { content /* #1 variable */ });

13 Console.WriteLine(content // #1 variable, La salida es: principal

14 //

15

16

17 objeto[] invokeArgs = nuevo objeto[] { contenido / * #1 variable */ };

18 testMethod.Invoke(null, invokeArgs);

19 content = (string)invokeArgs[0]; // #2 variable, omitir desde invocar, establecer en contenido.

20 Console.WriteLine(content); // variable #2, la salida es: prueba

21 }

22 }

23

24 static void TestMethod(ref string arg)

25 {

26 arg = "prueba"; 2 variables,

Quiero pasar al proceso principal.

27 }

28 }