2009-01-31 43 views
13

Tôi đã đăng ký một sự kiện trong lớp của mình, và như thường lệ, tôi đã lười biếng và chỉ sử dụng tính năng tự động hoàn thành được tích hợp trong Visual Studio 2008 Pro, tạo tự động tạo và tạo phương thức liên kết.Điều gì cấu thành 'tạo đại biểu dư thừa'?

public abstract class FooBase 
{ 
    protected event EventHandler<MyValueChangedArgs> MyValueChanged; 

    protected FooBase() 
    { 
     MyValueChanged += 
      new EventHandler<MyValueChangedArgs>(HandleMyValueChanged); 
    } 

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e) 
    { 
     // Some handling logic 
    } 
} 

Thông thường tôi không nghĩ hai lần khi Visual Studio gens xử lý sự kiện cho tôi, nhưng sau đó tôi nhận được đề xuất từ ​​Refactor! Pro để "Hủy bỏ sáng tạo đại biểu thừa". Kết quả đề xuất trong:

public abstract class FooBase 
{ 
    protected event EventHandler<MyValueChangedArgs> MyValueChanged; 

    protected FooBase() 
    { 
     MyValueChanged += HandleMyValueChanged; 
    } 

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e) 
    { 
     // Some handling logic 
    } 
} 

Trong trường hợp nào việc tạo đại biểu là thừa và khi nào việc tạo đại biểu phù hợp?

Cảm ơn.

Trả lời

4

Tôi nghĩ rằng Refactor! nói với bạn rằng dòng

MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged); 

có thể được rút ngắn và trình biên dịch sẽ suy ra một sáng tạo xử lý sự kiện và kiểu lập luận TEventArgs ...

Trong hoàn cảnh nào là ủy tạo dư thừa và khi nào là tạo đại biểu phù hợp?

Bật code thiết kế tạo ...

5

Xin lỗi về điều đó. Chúng tôi không có thời gian trong lịch sản phẩm để tạo mã ngắn hơn khi các phương thức nặc danh được thêm vào C#.

Tôi luôn chỉnh sửa mã được tạo để xóa cú pháp thừa.

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