sirve qué que para método metodos metodo funciones firma ejemplos definicion c# reflection

qué - Reflexión de C#: ¿Cómo obtener la referencia de clase de una cadena?



metodos y funciones en c# (5)

Quiero hacer esto en C #, pero no sé cómo:

Tengo una cadena con un nombre de clase FooClass : FooClass y quiero invocar un método (estático) en esta clase:

FooClass.MyMethod();

Obviamente, necesito encontrar una referencia a la clase a través de la reflexión, pero ¿cómo?


A través de Type.GetType puede obtener la información del tipo. Puede usar esta clase para obtener la información del método y luego invoke el método (para los métodos estáticos, deje el primer parámetro nulo).

Es posible que también necesite el nombre del ensamblado para identificar correctamente el tipo.

Si el tipo está en el ensamblado que se está ejecutando actualmente o en Mscorlib.dll, es suficiente proporcionar el nombre de tipo calificado por su espacio de nombre.


Puede usar Type.GetType , pero necesitará saber el nombre completo de la clase, incluido el espacio de nombres, y si no está en el ensamblado actual o mscorlib, necesitará el nombre del ensamblado. (Idealmente, utilice Assembly.GetType(typeName) lugar: ¡me resulta más fácil en términos de obtener la referencia de ensamblaje correcta!)

Por ejemplo:

// "I know String is in the same assembly as Int32..." Type stringType = typeof(int).Assembly.GetType("System.String"); // "It''s in the current assembly" Type myType = Type.GetType("MyNamespace.MyType"); // "It''s in System.Windows.Forms.dll..." Type formType = Type.GetType ("System.Windows.Forms.Form, " + "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, " + "PublicKeyToken=b77a5c561934e089");


Un poco tarde para la respuesta, pero esto debería hacer el truco

Type myType = Type.GetType("AssemblyQualifiedName");

el nombre calificado de su ensamblado debería ser así

"Boom.Bam.Class, Boom.Bam, Version=1.0.0.262, Culture=neutral, PublicKeyToken=e16dba1a3c4385bd"


Un uso simple:

Type typeYouWant = Type.GetType("NamespaceOfType.TypeName, AssemblyName");

Muestra:

Type dogClass = Type.GetType("Animals.Dog, Animals");


Type.GetType utilizar el método Type.GetType .

Aquí hay un ejemplo muy simple:

using System; using System.Reflection; class Program { static void Main() { Type t = Type.GetType("Foo"); MethodInfo method = t.GetMethod("Bar", BindingFlags.Static | BindingFlags.Public); method.Invoke(null, null); } } class Foo { public static void Bar() { Console.WriteLine("Bar"); } }

Digo simple porque es muy fácil encontrar un tipo de esta manera que sea interno para el mismo ensamblaje. Consulte la respuesta de Jon para obtener una explicación más detallada sobre lo que debe saber al respecto. Una vez que haya recuperado el tipo, mi ejemplo le muestra cómo invocar el método.