Почему вы не используете делегат Common.Logging, если он точно такой же?
Однако решение вашей проблемы - либо использовать динамическое приведение, описанное в статье, связанной с упомянутым вами вопросом, либо сделать это следующим образом:
YourNamespace.FormatMessageHandler yourHandler = ...;
Common.Logging.FormatMessageHandler handler = (f, a) => yourHandler(f, a);
UPDATE:
Согласно вашему комментарию, вы хотите что-то подобное:
public void Error(Action<Your.FormatMessageHandler> formatMessageCallback)
{
_logger.Error(h => formatMessageCallback((f, a) => h(f, a)));
}
Это создаст новое действие с одним параметром h
типа Common.Logging.FormatMessageHandler
, которое вызывает предоставленное действие formatMessageCallback
с новым делегатом Your.FormatMessageHandler
, который принимает два параметра f
и a
. Этот новый делегат, в свою очередь, вызывает h
с двумя предоставленными параметрами.