Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class SystemTime
- {
- private static Func<DateTime> _defaultTimeSource = () => DateTime.UtcNow;
- private static Func<DateTime> _timeSource = _defaultTimeSource;
- public static DateTime UtcNow => _timeSource();
- public static IDisposable Freeze(DateTime? time = null)
- {
- var frozen = time ?? DateTime.UtcNow;
- _timeSource = () => frozen;
- return Resetter.Instace;
- }
- private static void Reset() => _timeSource = _defaultTimeSource;
- private class Resetter : IDisposable
- {
- public static readonly Resetter Instace = new Resetter();
- public void Dispose()
- {
- SystemTime.Reset();
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- using (SystemTime.Freeze(new DateTime(2015, 10, 2)))
- {
- Console.WriteLine(SystemTime.UtcNow);
- }
- Console.WriteLine(SystemTime.UtcNow);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement