Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class StopWatchProxy
- {
- public static StopWatchProxyResultWithValue<T> Handle<T>(Func<T> lambda)
- {
- var stopWatch = new Stopwatch();
- stopWatch.Start();
- var result = lambda();
- stopWatch.Stop();
- return StopWatchProxyResultWithValue<T>.FromStopWatch(result, stopWatch);
- }
- public static StopWatchProxyResult Handle(Action lambda)
- {
- var stopWatch = new Stopwatch();
- stopWatch.Start();
- lambda();
- stopWatch.Stop();
- return StopWatchProxyResult.FromStopWatch(stopWatch);
- }
- }
- public class StopWatchProxyResult
- {
- public TimeSpan Elapsed { get; set; }
- public long ElapsedTicks { get; set; }
- public long ElapsedMilliseconds { get; set; }
- public static StopWatchProxyResult FromStopWatch(Stopwatch stopWatch)
- => new StopWatchProxyResult
- {
- Elapsed = stopWatch.Elapsed,
- ElapsedMilliseconds = stopWatch.ElapsedMilliseconds,
- ElapsedTicks = stopWatch.ElapsedTicks
- };
- }
- public class StopWatchProxyResultWithValue<T> : StopWatchProxyResult
- {
- public T Result { get; set; }
- public static StopWatchProxyResultWithValue<T> FromStopWatch(T result, Stopwatch stopWatch)
- => new StopWatchProxyResultWithValue<T>
- {
- Result = result,
- Elapsed = stopWatch.Elapsed,
- ElapsedMilliseconds = stopWatch.ElapsedMilliseconds,
- ElapsedTicks = stopWatch.ElapsedTicks
- };
- }
Add Comment
Please, Sign In to add comment