viernes, 11 de junio de 2010

Crear Objetos dinamicamente

Hay dos formas de crear de forma dinámica un objeto "on the fly".
Estas formas de implementar patterns de "factory" usan siempre reflection de .net.
Incluir:
using System.Reflection;

Lo esencial quizas es que todos los objetos que creemos tengan una clase Base comun, para poder asignarselos y luego poder castearlos a la clase que queremos.

Type tipoObjeto = typeof(ClaseaInstanciar)
ClaseBase c = (ClaseBase)Assembly.GetExecutingAssembly().CreateInstance(tipoObjeto.FullName);

Otra forma es (aparentemente mas lenta):
string strClase = "NombreDeClaseACrear";
Type tipoClase = Type.GetType(strClase);
ClaseBase c = (ClaseBase) t.InvokeMember("ctor", BindingFlags.CreateInstance, null, null, null);


---------------------------------------

Ejemplo Concreto:

class Persona
{
string nombre="";
}
class Trabajador : Persona
{
string IDTrabajador = "";
}


private void llamada()
{
Type tipoObjeto = typeof(Trabajador);
Persona c = (Persona)Assembly.GetExecutingAssembly().CreateInstance(tipoObjeto.FullName);
}


1 comentario: