Chúng tôi đang sử dụng IoC và có đăng nhập của chúng tôi tiếp xúc với nó. Chúng tôi đang sử dụng Common.Logging
và tôi đã viết một đại biểu phù hợp cho Common.Logging.FormatMessageHandler
nhưng tôi không biết cách chuyển đổi từ phiên bản của đại biểu đó sang phiên bản mà Common.Logging
api đang chờ.Chuyển đổi từ một đại biểu này sang đại biểu khác. Pseudo cast
Câu hỏi này có vẻ tương tự nhưng tôi không hiểu cách chuyển đổi từ loại đã triển khai sang loại đã biết mà tôi muốn gọi. Dynamically casting one type of delegate to another
Đây là chữ ký của tôi đại biểu:
public delegate string FormatMessageHandler(string format, params object[] args)
Đây là Common.Logging của:
public delegate string FormatMessageHandler(string format, params object[] args)
Cùng tên (không có nghĩa là vấn đề) và cùng một số thông số. Cả hai đều được biết tại thời gian biên dịch nên nó phải là một cái gì đó hiển nhiên nhưng tôi không nhìn thấy nó.
Giải thích của bạn rất tuyệt vời và hoạt động cho đến khi tôi cố gắng sử dụng Hành động. Làm thế nào tôi có thể làm với hành động? Chữ ký phương thức của tôi: Lỗi void công khai (Hành động formatMessageCallback) Và phương thức cuối cùng để gọi là: void Common.Logging.Error (Action formatMessageCallback); –
Tôi không trưng bày đại biểu Common.Logging hoặc bất kỳ trường hợp API nào mà chúng tôi quyết định sử dụng khung đăng nhập khác trong tương lai. Nếu điều đó xảy ra thì "tất cả" chúng ta phải làm là viết một số mã thực hiện giao diện ghi nhật ký mà chúng ta đã định nghĩa trước và bọc các cuộc gọi đến khung công tác ghi mới. –
@David: Lý do không sử dụng đại biểu của Logger là hợp lệ, cảm ơn vì đã giải thích. Vui lòng xem cập nhật cho giải pháp cho nhận xét đầu tiên của bạn. –