Hola, estoy haciendo una clase que tiene por objetivo actuar como delivery.
Debe ejecutar métodos que están sobrecargados en una clase. Dependiendo de la
opción debe ejecutar uno u otro.
No logro enlazar el método delegado. Me da el error: El valor no puede ser
nulo.
Nombre del parámetro: method; o el error: Error al enlazar con el método de
destino.
La clase es la siguiente:
public delegate int Delegado(Object[] args);
public class cDelivery
{
public cDelivery(){ }
#region Empleados
public int Add_Empleado(cGG_EMPLEADOS obj, int modulo)
{
cGG_EMPLEADOS Empleado = new cGG_EMPLEADOS();
//Obtengo el método
Type TipoEmpleado = Type.GetType("cGG_EMPLEADOS");
BindingFlags flags = BindingFlags.Public | BindingFlags.Static;
MethodInfo Metodo = typeof(cGG_EMPLEADOS).GetMethod("Agr",flags);
//Quitando el parametro flags me da el error: Error al enlazar con el método
de destino.
Object[] args;
//Delego el método
//Delegado Delivery =
(Delegado)Delegate.CreateDelegate(typeof(Delegado), Metodo);
//Delegate Delivery = Delegate.CreateDelegate(typeof(Delegado),
null, Metodo, false);
//Delegate Delivery = Delegate.CreateDelegate(typeof(Delegado),
Metodo);
Delegado delegado =
(Delegado)Delegate.CreateDelegate(typeof(Delegado), Metodo);//Aqui arroja el
error
int _rta = 0;
if (delegado != null)
{
//Direcciono según el módulo
switch (modulo)
{
case 1:
args = new Object[] { (int)0, (string)obj.nombre,
(string)obj.apellido, (int?)obj.id_pais, (int?)obj.id_provincia,
(int?)obj.id_localidad, (string)obj.direccion, (string)obj.dni,
(string)obj.tel, (string)obj.cel, (string)obj.email, (int?)obj.id_sector,
(string)obj.observaciones, (object)obj.id_usuario,
(DateTime?)obj.fecha_alta_reg };
_rta = delegado(args);
break;
case 2:
args = new Object[] { (int)0, (string)obj.nombre,
(string)obj.apellido, (int?)obj.id_pais, (int?)obj.id_provincia,
(int?)obj.id_localidad, (string)obj.direccion, (string)obj.dni,
(string)obj.tel, (string)obj.cel, (string)obj.email, (int?)obj.id_sector,
(string)obj.observaciones, (object)obj.id_usuario,
(DateTime?)obj.fecha_alta_reg };
_rta = delegado(args);
break;
}
}
return _rta;
}
#endregion
}
Alguna idea, me estoy olvidando de algo.
Muchas gracias
Leer las respuestas