部分types推断
我有这样一个通用的方法(简化版本):
public static TResult PartialInference<T, TResult>(Func<T, TResult> action, object param) { return action((T)param); }
在上面, param
是有param
的typesobject
。 这是要求的一部分。
当我填写types时,我可以这样称呼它:
var test1 = PartialInference<string, bool>( p => p.EndsWith("!"), "Hello world!" );
但是,我想使用types推断。 最好我想写这个:
var test2 = PartialInference<string>( p => p.EndsWith("!"), "Hello world!" );
但是这不能编译。 我想到的最好的是这样的:
var test3 = PartialInference( (string p) => p.EndsWith("!"), "Hello world!" );
我想这个作为一个types参数,仍然有正确的types返回types的原因是因为我的实际调用看起来像这样:
var list1 = ComponentProvider.Perform( (ITruckSchedule_StaffRepository p) => p.GetAllForTruckSchedule(this) )
这是非常丑陋的,我很想写这样的东西:
var list2 = ComponentProvider.Perform<ITruckSchedule_StaffRepository>( p => p.GetAllForTruckSchedule(this) )
您可以将t分割为genericstypes的generics方法:
class Foo<TOuter> { public static void Bar<TInner>(TInner arg) {...} } ... int x = 1; Foo<string>.Bar(x);
这里的int是推断的,但string是显式的。
你试图达到的是不可能的。 如果推论是可能的,你需要指定generics参数或者不指定它们。