Закончилось техническое интервью, в конце надо было выполнить задание, в реальном времени. Было волнующе. O_o
using System;
using System.Net;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
var alazy = new AsyncLazy<object>(async () => {
using (var client = new WebClient())
{
return await client.DownloadStringTaskAsync("https://kayaposoft.com/enrico/json/v2.0?action=getSupportedCountries");
}
});
var value = await alazy.Value;
Console.WriteLine(value);
}
}
public class AsyncLazy<T> : Lazy<Task<T>>
{
public AsyncLazy(Func<Task<T>> taskFactory) : base(() => Task.Factory.StartNew(() => taskFactory()).Unwrap())
{
}
public TaskAwaiter<T> GetAwaiter()
{
return Value.GetAwaiter();
}
}
}