Перейдите прямо к документам W3C. Они время от времени являются немного загадочными, но они - основательная документация.
Для причуд, очевидно, сайты как Quirksmode хороши. Но только как только Вы прочитали фактическую документацию W3C.
Спецификация C # не позволяет выводить половину аргументов типа. Вы должны либо позволить компилятору вывести все аргументы типа (что не всегда применимо, как в вашем случае), либо вручную указать их все.
ОБНОВЛЕНИЕ (ответ на комментарий): Пока меня нет команда C #, чтобы дать абсолютный ответ на ваш вопрос, я предполагаю, что сложность разрешения перегрузки (которая уже является умопомрачительной; вы знаете, что если вы прочтете этот раздел спецификации C #), значительно увеличилась бы, если бы они хотели разрешить половину типов, которые должны быть выведены, и наполовину нет (особенно с учетом того факта, что вы можете перегружать методы только количеством общих аргументов).
Это зависит .. .
Если вы просто используете SomeGenericType
, вы можете сделать:
public TResult Get<TResult>() where TResult : IConvertible {
SomeGenericType<TResult> myInstance = ...
//...code that sets someValue...
return (TResult) someValue;
}
В этом случае не обязательно есть способ поместить туда первый тип. Поскольку ваш пример не передает SomeGenericType
явно в качестве параметра, он предполагает, что это возможно.
В противном случае вам необходимо полностью указать все ваши общие аргументы. К сожалению, это '