using System.Threading.Tasks;
public static async Task Main()
var subject = new Subject(new FakeRepository());
await subject.DoSomethingAsync();
private readonly IRepository _repository;
public Subject(IRepository repository)
_repository = repository;
public async Task DoSomethingAsync()
_repository.InsertAsync();
await _repository.GetAsync();
public interface IRepository
public class FakeRepository : IRepository
public async Task InsertAsync()
Console.WriteLine("1. insert");
public async Task GetAsync()
Console.WriteLine("2. get");