Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/08/2009, 21:35
Avatar de Peterpay
Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 5 meses
Puntos: 87
Respuesta: Problema con la implementacion de Clases

claro que existe una manera usando reflection y sabiendo que tu clase solo necesita inicializarse tu podrias sin problemas invocar al metodo que deseas con solo el nombre

supongamos que tienes una clase x
Código csharp:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace MiClase
  7. {
  8.     public class ClaseX
  9.     {
  10.         private static string pvalorX;
  11.         public static string valorX { get { return pvalorX; } set { pvalorX=value;} }
  12.  
  13.         public static double Metodo1()
  14.         {
  15.            /// loque sea que haga
  16.                         return 3.0;
  17.         }
  18.  
  19.  
  20.         public static double Metodo2()
  21.         {
  22.                         return 1.0;
  23.         }
  24.  
  25.         public static double Metodo3()
  26.         {
  27.             return 2.0;
  28.         }
  29.  
  30.     }
  31. }

y quieres invocar tus metodos dinamicamente solo con el nombre

Código csharp:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Reflection;
  5.  
  6.  
  7. namespace MiClase
  8. {
  9.    public class ClassInvocaDinamicamente
  10.     {
  11.         public double cualquierfuncion(string metodo)
  12.         {  
  13.             //Namespace.NombreClase
  14.             Type variableTipo = Type.GetType("MiClase.ClaseX");
  15.             // Que Metodo Invocar
  16.             MethodInfo variableInfoMetodo= variableTipo.GetMethod(metodo);
  17.             // Ojo esto solo funcionara si tu constructor es static sin parametros y si tus metodos son estaticos y no requieren que instancies la clase
  18.             object instanciaResultado=variableInfoMetodo.Invoke(null, null);
  19.             double resultado = Convert.ToDouble(instanciaResultado);
  20.             return resultado;
  21.         }
  22.     }
  23. }


y cuando invoques tu metodo simplemente haras algo como esto

Código csharp:
Ver original
  1. MiClase.ClassInvocaDinamicamente objeto = new MiClase.ClassInvocaDinamicamente();
  2.             Console.WriteLine(objeto.cualquierfuncion("Metodo1"));
  3.             Console.WriteLine(objeto.cualquierfuncion("Metodo2"));
  4.             Console.WriteLine(objeto.cualquierfuncion("Metodo3"));
  5.             Console.ReadLine();

prueba haciendo algo asi , pero pon atencion a los detalles esta es la forma rapida considerando q tus propiedades, metodos y miembros practicamente todos son estaticos, si tienes miembros no estaticos hay q trabajar mas con reflection pero de que puedes invocar metodos solo con el nombre es indudable.

cualquier dudad no aqui estamos para ayudarte
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5