我有这样的(简化版本)的通用方法:偏类型推断
public static TResult PartialInference<T, TResult>(Func<T, TResult> action, object param)
{
return action((T)param);
}
在上文中,param
是故意object
类型。这是要求的一部分。
当我填写的类型,我可以这样调用:
var test1 = PartialInference<string, bool>(
p => p.EndsWith("!"), "Hello world!"
);
不过,我想使用类型推断。最好我想写这个:
var test2 = PartialInference<string>(
p => p.EndsWith("!"), "Hello world!"
);
但是这不能编译。我想出的最好的是这样的:
var test3 = PartialInference(
(string p) => p.EndsWith("!"), "Hello world!"
);
我想有这样一个类型参数,仍然有正确类型的返回类型,因为我的实际调用看起来像这样的理由:
var list1 = ComponentProvider.Perform(
(ITruckSchedule_StaffRepository p) => p.GetAllForTruckSchedule(this)
)
这是非常丑陋的,我很想写的是这样的:
var list2 = ComponentProvider.Perform<ITruckSchedule_StaffRepository>(
p => p.GetAllForTruckSchedule(this)
)
.NET类型推断是全部或全部 - 绝不是部分的。 – Dario 2010-10-23 10:42:53
重写该方法的任何想法仍然会摆脱“p”参数的丑陋输入? – 2010-10-23 10:44:11
@Dario这是一个过度泛化。类型推断是C#功能,其他.net语言可能会以不同的方式处理它。 – CodesInChaos 2011-07-23 20:36:30