[ Foro de C# ]

Metodos Dinamicos

10-Feb-2014 19:44
Invitado (Daniel Cuevas)
5 Respuestas

Buenas tardes:
Les cuento mi problema:
Tengo una aplicacion en la cual creo "n" instancias con ayuda de un ciclo For.
Tengo 1 metodo que realiza X accion.
Lo que necesito esque para cada Instancia se cree un metodo.
Si me pudieran ayudar les agradeceria mucho !


10-Feb-2014 19:50
Nacho Cabanes (+84)

No entiendo... cada clase tendrá una serie de métodos definidos, de modo que cada vez que crees una instancia de esa clase (un objeto), podrás acceder a los métodos que esa clase había definido para ese objeto (esa instancia):


for (i=0; i<n; i++)
{
    Clase objeto = new Clase();  // Nueva instancia
    objeto.LlamarMetodo();       // Llamar al método para esa instancia
}


Si realmente hablas de crear "métodos dinámicos", no se trata de una pregunta de principiante  ;-)  y podrás encontrar soluciones por ejemplo en la propia MSDN:

http://msdn.microsoft.com/en-us/library/exczf7b9(v=vs.110).aspx


10-Feb-2014 20:08
Invitado (Daniel Cuevas)

Hola Nacho, Gracias por contestar tan rapido.
te explico, estoy haciendo instancias pero no de clases, sino de una libreria que utilizo en la app.

Instancia:


for(int i = 0 ....){
 zkemkeeper.CZKEMClass Nombre1 = new zkemkeeper.CZKEMClass[num_reg];
}
// esto ya lo hace, creo objetos tantos lo necesite


Metodo:


Con(){
// aqui esta el metodo que se ejecuta 
}


SI me pudieras ayudar como solucionar mi problema, lo que necesito es que cuando entre el Metodo sepa cual instancia lo ejecuto. Gracias por todo !


10-Feb-2014 20:24
Nacho Cabanes (+84)

Con la programación orientada a objetos se trata precisamente de "no necesitar saber qué instancia lo ejecutó". Tú puedes tener un array que contenga objetos de una clase y de varias clases base y se llamará al método (virtual) de la clase a la que realmente pertenezca cada objeto.

Si aun así quieres saber qué objeto es, puedes crearte un atributo que sea un string o un contador y lo inicializas en el constructor:


for (i=0; i<n; i++)
{
    Clase objeto = new Clase(i);  // Nueva instancia
    objeto.MostrarNumero();       // Llamar al método para esa instancia
}


donde la clase sería algo como


Class Clase
{
    int numero;

    Clase(int n)
    {
        numero = n;
    }

    public void MostrarNumero()
    {
        System.Console.WriteLine(n);
    }
}


No se si te refieres a eso...


11-Feb-2014 18:40
Invitado (Daniel Cuevas)

Muchas gracias por tu ayuda, te comento y ya quedo, me fue de mucha ayuda tu comentario.
Ahora tengo otro problema no se si me puedas ayudar..
Ahora tengo dos clases la primera:
public partial class RTEventsMain :  Form{}
y la segunda:
class ClassSK : zkemkeeper.CZKEMClass
Pero en esta  segunda utilizo elementos de la ventana de diseño y obviamente no los reconoce,
como puedo hacerle ya que no puedo heredar mas de una clase.
Te agradesco mucho por tu ayuda !


12-Feb-2014 22:33
Nacho Cabanes (+84)

Puedes crear atributos públicos dentro de la ventana de diseño, o (preferiblemente) métodos Get públicos, para poder acceder desde otra clase al contenido de esa.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)