2012-10-08 29 views
7

Tôi có một lớp học có các tài sản sau đây:C# Chuyển đổi Hành động Hành động <bool>

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

Và tôi có một constructor mà mất Action<bool> như một cuộc tranh cãi.

Bây giờ tôi muốn thêm một hàm tạo khác chấp nhận một đối tượng kiểu Action. Làm cách nào để chuyển đổi Action thành Action<bool>? Tham số bool phải đúng trong trường hợp này.

Trả lời

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

Bây giờ bạn có thể nhanh chóng lớp này trong 2 cách tùy thuộc vào một trong 2 nhà xây dựng bạn muốn gọi:

  1. var foo = new Foo(x => { Console.WriteLine("Hello"); }); (gọi ctor đầu tiên)
  2. var foo = new Foo(() => { Console.WriteLine("Hello"); }); (gọi cho người thứ hai)
6
Action a =() => aboolaction(true); 
+2

Điều đó đang chuyển đổi một 'Action ' thành một 'A ction'. (Anh ấy cần đối diện) – Servy

+0

Bạn nói đúng, tôi đã đọc câu hỏi theo cách khác (câu hỏi ban đầu ít rõ ràng hơn câu hỏi được đăng ngay bây giờ). –

Các vấn đề liên quan