Mostrando entradas con la etiqueta c#. Mostrar todas las entradas
Mostrando entradas con la etiqueta c#. Mostrar todas las entradas

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);
}


jueves, 4 de marzo de 2010

Reemplazar sin importar el casing o si es mayuscula o minuscula

Por alguna razon estas funciones no estan en la clase string como deberian. Pero, de todas formas estan en algun lugar del framework, esto es la clase "Strings" de .net.
Si utilizamos la funcion replace de ahi tendremos que pasar primero la string con la cual queremos trabajar, luego lo que queremos encontrar, y como tercero que es lo que queremos poner. Hay dos parámetros que indican desde que indice hasta cuanta cantidad de caracteres considerará el replace.
Por último, y lo mas importante, es el parámetro que indica que esto es texto, es decir, no le hace caso a mayusculas/minusculas.

Ejemplo:
dim strDestino as string = Strings.Replace(strOrigen, strQueReemplazar, strPorQueReemplazarlo, 0, , CompareMethod.Text)