Tôi đang sử dụng lớp chuyển tiếp sự kiện trong C#. Tôi đã tự hỏi nếu có một cách để làm nó đòi hỏi ít chi phí mã hơn.Sự kiện chuyển tiếp trong C#
Đây là ví dụ về những gì tôi có cho đến thời điểm này.
class A
{
public event EventType EventA;
}
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += OnEventA;
}
public void OnEventA()
{
if(EventB)
{
EventB();
}
}
}
Lớp A tăng sự kiện ban đầu. Lớp B chuyển tiếp nó như EventB (mà về cơ bản là cùng một sự kiện). Lớp A bị ẩn khỏi các mô-đun khác để họ không thể đăng ký trực tiếp EventA.
Những gì tôi đang cố gắng làm là giảm chi phí mã trong lớp B để chuyển tiếp sự kiện, như thường không có sự xử lý thực sự của các sự kiện trong lớp B. Ngoài ra tôi sẽ có một số sự kiện khác nhau nhiều phương thức OnEvent() trong lớp B chỉ phục vụ để chuyển tiếp các sự kiện.
Có thể tự động liên kết EventA để EventB một cách nào đó, vì vậy tôi muốn có một cái gì đó như thế này:
class B
{
A m_A = new A();
public event EventType EventB;
public B()
{
m_A.EventA += EventB; // EventA automatically raises EventB.
}
}
Tôi đang sử dụng một trình biên dịch C# 2.0 btw.
Great câu hỏi, đặc biệt là kể từ khi bạn không nên quên để bỏ đăng ký từ EventA , nếu không có thể có một rò rỉ bộ nhớ (đối tượng B của bạn sẽ vẫn còn trong bộ nhớ miễn là A là, ngay cả khi nó không còn cần thiết). – dbkk