using System.Threading.Tasks;
public static void Main()
new Generic<string>(MethodAsync);
new Generic<string>(new Func<Task<string>>(MethodAsync));
public static Task<string> MethodAsync()
return Task.FromResult("");
public Generic(Func<T> action){ }
public Generic(Func<Task<T>> func){ }