Crear una objeto o instance

16/05/2010 - 06:12 por Gina Solís | Informe spam
Si poseo en un string el nombre de una clase, cual es la instruccion para
crear un ejemplar u objeto de esa clase utilizando C#?

Preguntas similare

Leer las respuestas

#1 Leandro Tuttini
16/05/2010 - 06:53 | Informe spam
hola
con el nombre de la clase no te alcanzara para crear una instancia de
la misma, deberas contanr con el Full Qualified Names

Using Fully Qualified Names
http://msdn.microsoft.com/en-us/library/dfb3cx8s(VS.71).aspx


o sea el nombre de la clase y el namespace que lo define, luego
podrias usar:

Activator.CreateInstance Method
http://msdn.microsoft.com/en-us/lib...teinstance(VS.90).aspx

como veras todo esto esta relacionado con Reflection

Reflection in C# Tutorial
http://www.codeproject.com/KB/cs/C_...orial.aspx

Reflection Examples [C#]
http://www.csharp-examples.net/refl...-examples/


por ahi en tu caso podrias usar algo como ser:

Type calcType = testAssembly.GetType("Test.Calculator");
object calcInstance = Activator.CreateInstance(calcType);


saludos
Respuesta Responder a este mensaje
#2 Alberto Poblacion
16/05/2010 - 08:07 | Informe spam
"Gina Solís" <GS> wrote in message
news:
Si poseo en un string el nombre de una clase, cual es la instruccion para
crear un ejemplar u objeto de esa clase utilizando C#?



Si conoces el nombre del ensamblado:

ObjectHandle oh = Activator.CreateInstance(
"NombreDelEnsamblado", "EspacioDeNombres.LaClase");
object obj = oh.Unwrap();

Si sabes ya en qué ensamblado está la clase y tienes una referencia al
mismo, por ejemplo, Assembly a=Assembly.GetExecutingAssembly(), entonces
puedes instanciar la clase a través de esa referencia al ensamblado. Por
ejemplo, el siguiente código invoca un constructor con un parámetro para
crear una instancia de la clase:

Assembly a=Assembly.GetExecutingAssembly()
//O bien: Assembly a = Assembly.Load("NombreDelEnsamblado");
Type t = a.GetType("EspacioDeNombres.LaClase");
Type[] tipos = new Type[] { typeof(int) };
ConstructorInfo ci = t.GetConstructor(tipos);
object obj = ci.Invoke(new object[] { 2 });

El código anterior hace lo mismo que esta sentencia:
obj=new EspacioDeNombres.LaClase(2);
Respuesta Responder a este mensaje
#3 Gina Solís
17/05/2010 - 19:11 | Informe spam
Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida