2012-10-08 8 views
7

Mam klasy, który ma następującą właściwość:C# Konwersja akcji do działania <bool>

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

I mam konstruktora, że ​​trwa Action<bool> jako argument.

Teraz chcę dodać inny konstruktor, który akceptuje obiekt typu Action. Jak mogę przekonwertować Action na Action<bool>? Parametr bool powinien w tym przypadku być prawdziwy.

Odpowiedz

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

Teraz można instancję tej klasy na 2 sposoby w zależności od których jeden z 2 konstruktorów chcesz wywołać:

  1. var foo = new Foo(x => { Console.WriteLine("Hello"); }); (wywołuje pierwszy konstruktor)
  2. var foo = new Foo(() => { Console.WriteLine("Hello"); }); (nazywa się drugi ctor)
6
Action a =() => aboolaction(true); 
+2

To jest konwersja 'akcji ' na 'A ction'. (On potrzebuje czegoś przeciwnego) – Servy

+0

Masz rację, przeczytałem to pytanie w inny sposób (pierwotne pytanie było mniej jasne niż to, które zostało opublikowane teraz). –