我的朋友们。我是泛型新手,但想使用泛型方法(FooAsync)创建接口(让它为IFooAsync),该接口获取另一个泛型类型(具有定义Process)的参数,但是我不想在其中包含此U类型方法定义。怎么做对?我的代码现在看起来像这样(我已将Object用作通用的Progress类型,但请确保它是一个糟糕的解决方案):
public interface IFooAsync
{
System.Threading.Tasks.Task<List<T>> FooAsync<T>(
// Some parameters, that my method gonna take.
System.IProgress<Object> progress,
System.Threading.CancellationToken cancellationToken) where T : new();
}
答案 0 :(得分:1)
你可以做
using System;
using System.Threading;
using System.Threading.Tasks;
public interface IFooAsync<TReturn> where TReturn : new()
{
Task<List<TReturn>> FooAsync<TProgress>(IProgress<TProgress> progress,
CancellationToken cancellationToken);
}
这意味着您不必在调用该方法时指定两个类型参数,因为编译器可以推断出它们。
例如
IFooAsync<string> myFoo = ... ;
IProgress<int> myProgress = ... ;
List<string> result = await myFoo.FooAsync(myProgress, CancellationToken.None);