public class WorkerA : IWorker
public void ExecuteAsync()
Console.WriteLine("WorkerA");
public class WorkerB : IWorker
public void ExecuteAsync()
Console.WriteLine("WorkerB");
public class MockWorker<T> : IWorker
public MockWorker(T worker)
public void ExecuteAsync()
public static void ExampleMethodThatTakesAWorker(IWorker worker)
public static void Main()
ExampleMethodThatTakesAWorker(a);
ExampleMethodThatTakesAWorker(b);
var mockA = new MockWorker<WorkerA>(new WorkerA());
ExampleMethodThatTakesAWorker(mockA);
var mockB = new MockWorker<WorkerB>(new WorkerB());
ExampleMethodThatTakesAWorker(mockB);