В данный момент я экспериментирую с Microsoft EventSources на С#. Одно ограничение заключается в следующем
... Количество и типы аргументов, передаваемых методу ETW, должны точно соответствовать типам, передаваемым вызываемой им перегрузке WriteEvent. Например:
[Event(2, Level = EventLevel.Informational)]
public void Info(string message, int count)
{
base.WriteEvent(2, message, count);
}
Это в основном ограничивает вас написанием более богатого API в классе EventSource. В основном это означает, что вы не можете создать метод, который получает пользовательский объект, и в теле метода вы можете сериализовать его в строку (или другой тип, поддерживаемый перегрузками WriteEvent).
Единственное, что вы можете решить, это имя метода, имена параметров и количество, которые отражают перегрузки WriteEvent. Или я ошибаюсь?