2012-10-08 7 views
7

私は、次のプロパティを持つクラスがあります。C#の変換アクション

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

をそして私は、引数としてAction<bool>を取るコンストラクタを持っています。

ここで、タイプActionのオブジェクトを受け入れる別のコンストラクタを追加します。 ActionAction<bool>に変換するにはどうすればよいですか?この場合、bool-parameterは真でなければなりません。

答えて

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

今あなたが呼び出したい2つのコンストラクタのどちらに応じて2通りの方法で、このクラスをインスタンス化できます。

  1. var foo = new Foo(x => { Console.WriteLine("Hello"); });は、(最初​​のctorのを呼び出す)
  2. var foo = new Foo(() => { Console.WriteLine("Hello"); });を(
6
Action a =() => aboolaction(true); 
+2

これは、 'Action 'を 'A 'に変換しています。 ction'。 (彼は反対が必要です) – Servy

+0

あなたは正しいです、私は他の方法で質問を読んでいます(元の質問は、今投稿されたものよりもあまり明確ではありませんでした)。 –