Tôi đang cố gắng tạo ra những gì tôi đang nghĩ đến như một lớp dịch, để chương trình của tôi có thể nói chuyện với nhiều nền tảng đích khác nhau. Mỗi nền tảng sẽ được xử lý bằng cách thực hiện riêng biệt một lớp trừu tượng. Tôi đã bỏ mọi thứ xuống vì mục đích đơn giản.Ép buộc thực hiện các sự kiện trong các lớp trừu tượng bắt nguồn
Tôi có một lớp trừu tượng, với một vài phương pháp trừu tượng:
abstract class ControllerBase
{
public abstract bool EnableDTMFDetection(string CallID, Party Party);
public abstract bool DisableDTMFDetection(string CallID, Party Party);
}
Sau đó một lớp (lớp) mà bắt nguồn từ ControllerBase, và thực hiện đầy đủ các phương pháp đó:
class PlatformOne : ControllerBase
{
public override bool EnableDTMFDetection(string CallID, Party Party)
{
// Do Stuff
return true;
}
public override bool DisableDTMFDetection(string CallID, Party Party)
{
// Do Stuff
return true;
}
}
Cho đến nay rất tốt Đối với PlatformOne, tôi buộc phải xác định từng phương pháp đó, quy định cách tôi sẽ gửi một thông báo gửi đi đến nền tảng đích của mình.
Đó là các sự kiện đã đến với tôi. Tôi cần để có thể nâng cao sự kiện từ bên trong các lớp học có nguồn gốc của tôi. Khi tôi thêm dòng sau vào controllerbase:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
Nó biên dịch tốt, nhưng tôi không thể nâng cao sự kiện từ bên trong lớp được thừa kế của tôi mà không có lỗi: "Sự kiện 'ControllerBase.MyEvent' chỉ có thể xuất hiện ở bên trái Mặt bên của + = hoặc - = (trừ khi được sử dụng từ bên trong loại 'ControllerBase') "
Vì vậy, a) Làm cách nào để tăng sự kiện của mình từ bên trong lớp dẫn xuất của tôi, và b) thực thi việc kết nối các sự kiện được chỉ định từ bên trong lớp dẫn xuất của tôi (một hàm trừu tượng la hoặc các phương thức giao diện). Cảm ơn bạn gọi :)
Dường như bạn cần đọc cách tăng sự kiện. Ngoài ra, nếu bạn thêm mã liên quan đến "MyEvent", điều đó có thể giúp trả lời câu hỏi. – Nayan