Я пытаюсь создать некоторую статистику о длительности вызова метода в библиотеке. Вместо того чтобы обернуть вызов каждого метода в библиотеку с помощью строк по времени и отслеживать его, я хочу создать общее действие и функцию, которые выполняют эти повторяющиеся шаги.
например. для методов, которые не возвращают значение, я создал это:
private readonly Action<string, Action> timedAction = (name, action) =>
{
var sw = Stopwatch.StartNew();
action.Invoke();
trackDuration(name, sw.ElapsedMilliseconds);
};
Это можно вызвать с помощью timedAction("methodname", () => lib.methodname())
.
Я хочу сделать что-то подобное для методов, возвращающих значение, но, очевидно, Action
не может использоваться для этой цели, поскольку он не может вернуть значение.
Есть ли способ сделать это с помощью общего Func
, поэтому мне не нужно объявлять один для каждой комбинации параметров библиотечного метода?