Question

Are there any pitfall I should be aware of doing so ?

Would you know of existing code dealing with the same pb I might encounter ?

Thks

Was it helpful?

Solution

Unfortunately, you cannot pass types as static parameters to a type provider. The static parameters passed using MyProvider< "first argument", 42 > have to be primitive types (like string, int and similar). I don't see the list anywhere in the documentation, but Type is definitely not supported.

The problem with doing this is that you could pass it typeof<MyType> where MyType is declared in the same file as the file that's using the type provider, and so the F# compiler would have to first compile the first part of a file, then invoke the provider and then continue. This sounds possible, but it is probably low-priority for the F# team.

The best way to pass information about type to a type provider is to give it a type name and then lookup the type using reflection (this will only work if the type is from an already compiled assembly):

type MyTest = MyTypeProvider<"System.Int32">
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top