Tôi là một người mới bắt đầu với C# và không thể tìm thấy bất kỳ câu trả lời cho điều này:Cách ủy quyền chính xác Hành động <Interface>?
Im cố gắng để ủy Hoạt động với một số thông số giao diện, nhưng đẩy thông qua chức năng với các đối tượng mà mở rộng giao diện này (hoặc lớp)
// some class extending interface
public class IntEvent : IFace{}
public class MoveEvent : IFace{}
// function i like to use to verify Action
static void setAction(Action<IFace> evt) {
// evt ...
}
// function to delegate as Action
static void evtCheck(IntEvent evt) {
// some func
}
static void evtMove(MoveEvent evt) {
// some func
}
// class {
// call method inside class and delegate this function :
setAction(evtCheck);
setAction(evtMove);
Tôi nhận được lỗi "evtCheck(IntEvent)
không thể chuyển đổi thành Action<IFace>
", ngay cả khi IntEvent
mở rộng giao diện IFace
.
Tôi nên giải quyết vấn đề này bằng cách nào? Có lẽ tôi phải sử dụng Func hoặc Delegate?
Vâng, đây là những gì tôi đang cố gắng làm. Các hàm hành động luôn mong đợi đối tượng mở rộng cùng một giao diện hoặc đối tượng. Ok, tôi sẽ xem xét mẫu thiết kế của khách truy cập. – turbosqel