private void brnOperar_Click(object sender, EventArgs e) { MiDelegado del = new MiDelegado(Sumar); //del.Invoke(3, 2); MiDelegado del2 = new MiDelegado(this.Restar); //del2(5, 2); MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2); del3.Invoke(10, 5); //MessageBox.Show(del3.Target.ToString()); //MessageBox.Show(del3.Method.ToString()); //foreach(MiDelegado d in del3.GetInvocationList()) //{ // MessageBox.Show(d.Method.ToString()); //} MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(Multiplicar)); del4.Invoke(5, 5); MiDelegado2 del5 = new MiDelegado2(OtraSuma); del5.Invoke(del, 8, 10); }
private void btnOperar_Click(object sender, EventArgs e) { Manejadora manejadora = new Manejadora(); //El delegado se encarga de invocar y pasar los datos recibidos a la direccion de memoria MiDelegado del = new MiDelegado(manejadora.Sumar); del.Invoke(3, 2);//Son los enteros que me requiere el metodo Sumar //del(5, 2); Se puede poner de ambas maneras MiDelegado del2 = new MiDelegado(manejadora.Restar); del2.Invoke(3, 2); //del2(5, 2); MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2); //Combinar lista de invocacion, se combina el primero y el segundo para que el tercero tengo dos metodos del3.Invoke(83, 102); //Hace el metodo sumar y restar en un solo delegado, ya que esta combinado //MessageBox.Show(del3.Method.ToString()); Me muestra la ultima firma que tiene ese delegado MessageBox.Show(del3.Target.ToString()); //Me muestra la instancia de donde esta el metodo foreach (Delegate aux in del3.GetInvocationList()) //Muestra todas las firmas que tienen el delegado { MessageBox.Show(aux.Method.ToString()); } MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(manejadora.Multiplicar)); //Combina con el delegado 3 que tiene sumar y restar y tambien multiplica del4(3, 2); MiDelegado2 del5 = new MiDelegado2(manejadora.OtraSuma); del5.Invoke(del, 5, 2); //Invocas al delegado y este hace el metodo que tiene cargado, ejemplo del tiene suma }