Ответ 1
К сожалению, вы не можете передавать типы как статические параметры поставщику типа. Статические параметры, переданные с использованием MyProvider< "first argument", 42 >
, должны быть примитивными типами (например, string
, int
и тому подобное). Я не вижу список в документации, но Type
определенно не поддерживается.
Проблема с этим заключается в том, что вы можете передать его typeof<MyType>
, где MyType
объявлен в том же файле, что и файл, который использует поставщик типов, и поэтому компилятору F # необходимо сначала скомпилировать первую часть файл, затем вызовите поставщика, а затем продолжите. Это кажется возможным, но это, вероятно, низкий приоритет для команды F #.
Лучший способ передать информацию о типе поставщику типа - дать ему имя типа, а затем искать тип с использованием отражения (это будет работать только в том случае, если тип из уже скомпилированной сборки):
type MyTest = MyTypeProvider<"System.Int32">