Могу ли я предоставить тип в качестве ввода для поставщика типа в F #?

Есть ли какая-то ошибка, о которой я должен знать?

Знаете ли вы существующий код, связанный с тем же pb, с которым я мог бы столкнуться?

Thks

Ответы

Ответ 1

К сожалению, вы не можете передавать типы как статические параметры поставщику типа. Статические параметры, переданные с использованием MyProvider< "first argument", 42 >, должны быть примитивными типами (например, string, int и тому подобное). Я не вижу список в документации, но Type определенно не поддерживается.

Проблема с этим заключается в том, что вы можете передать его typeof<MyType>, где MyType объявлен в том же файле, что и файл, который использует поставщик типов, и поэтому компилятору F # необходимо сначала скомпилировать первую часть файл, затем вызовите поставщика, а затем продолжите. Это кажется возможным, но это, вероятно, низкий приоритет для команды F #.

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

type MyTest = MyTypeProvider<"System.Int32">