поделиться своим решением случайно?

ужно сделать какой-то общий вывод типа для реализации языка сценариев, и мне интересно, если я упускаю какой-то простой подход. На данный момент позвольте мне спросить о структуре типов и игнорировать границы. Для иллюстрации приведем глубоко вложенный пример:

T foo<T>( List<List<List<T>>> ) {...}

Теперь я хочу проверить, могу ли я передать строку аргумента типа:

List<List<List<string>>>

к этому методу, а затем используйте MakeGenericMethod () с обнаруженным типом параметра, чтобы преобразовать и вызвать его.

Из того, что я могу сказать, даже если мне удастся создать открытый универсальный тип, эквивалентный аргументу foo (т.е.List<List<List<T>>>), он не будет проверяться с помощью isAssignable (). Я не уверен, есть ли какая-то хитрость для проверки присваиваемости открытых универсальных типов или просто не поддерживается. Я думаю, что если я должен, я могу сделать это напрямую.

Об ограничении - похоже, мне придется рекурсивно пролистывать типы, чтобы найти тип аргумента, который соответствует расположению параметра типа, а затем выполнить подстановку ... Я надеялся, что смогу каким-то образом конструировать вызываемый метод из типа аргумента более напрямую, но я не вижу, как это сделать.

Любой совет от кого-то, кто уже прошел через это безумие, будет оценен :)

спасибо, пэт нимейер

Ответы на вопрос(0)

Ваш ответ на вопрос