2012-10-08 23 views
7

tengo una clase que tiene la siguiente propiedad:C# Convertir una acción a otra <bool>

public Action<bool> Action { get; private set; } 

Y tengo un constructor que toma como argumento Action<bool>.

Ahora quiero agregar otro constructor que acepte un objeto de tipo Action. ¿Cómo puedo convertir Action en Action<bool>? El parámetro bool debería ser cierto en este caso.

Respuesta

12
public class Foo 
{ 
    public Foo(Action<bool> action) 
    { 
     // Some existing constructor 
    } 

    public Foo(Action action): this(x => action()) 
    { 
     // Your custom constructor taking an Action and 
     // calling the existing constructor 
    } 
} 

Ahora usted puede crear una instancia de esta clase de 2 maneras dependiendo de cuál de los 2 constructores que desea invocar:

  1. var foo = new Foo(x => { Console.WriteLine("Hello"); }); (llama a la primera ctor)
  2. var foo = new Foo(() => { Console.WriteLine("Hello"); }); (llama al segundo ctor)
6
Action a =() => aboolaction(true); 
+2

Eso está convirtiendo una 'Acción ' en un 'A ction'. (Él necesita lo opuesto) – Servy

+0

Tiene razón, leí la pregunta al revés (la pregunta original era menos clara que la que se publicó ahora). –

Cuestiones relacionadas