Вывод типа C # не работает с ограничениями или возвращаемыми значениями. Таким образом, вам будет немного удаче с
public static void SomeMethod
(this IDictionary> dict)
{ }
Это будет работать, если вы объявите параметр как new Dictionary< string, IEnumerable
, но не , если вы объявите его new Dictionary
.
Я должен сказать, что, как я читал раздел 7.5.2 c # spec , кажется, что, поскольку List
реализует IEnumerable
, вывод типа TUnderlyingValue
должен работать. Однако этот раздел не совсем понятен. Я предполагаю, что это не работает через несколько «слоев», так как SomeMethod
будет работать, просто называя его SomeMethod(new List
. Я специально не вижу ничего в спецификации, которая имеет дело с разрешением типа, где U = Ca
, поэтому, возможно, вывод на этом уровне не определен.