我有這樣的(簡化版本)的通用方法:偏類型推斷
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