这纯粹是审美问题,但我认为还是值得一问。在以下代码中:
interface IGiveResult<TResult>
{
TResult GetResult();
}
static class ResultGetter
{
GetResultFrom<TResultGiver, TResult>(TResultGiver giver) where TResultGiver : IGiveResult<TResult>
{
return giver.GetResult();
}
}
要调用 GetResultFrom
,我需要像这样指定两个类型参数:
ResultGetter.GetResultFrom<SomeGiverType, SomeResultType>(someGiverInstance);
但是,我想调用是这样的:
ResultGetter.GetResultFrom<SomeGiverType>(someGiverInstance);
毕竟,编译器拥有推断第二个泛型类型所需的所有信息。但是,这不会编译。是否可以更改此代码,以便不必指定结果类型?