2012-03-03 12 views

答えて

13

残念ながら、あなたはタイププロバイダへの静的パラメータとして型を渡すことはできません。 MyProvider< "first argument", 42 >を使用して渡された静的パラメータは、プリミティブ型(string,intなど)でなければなりません。ドキュメントのどこにでもリストは表示されませんが、Typeはサポートされていません。

この問題は、typeof<MyType>に渡すことができます。ここで、MyTypeは型プロバイダを使用しているファイルと同じファイルで宣言されているため、F#コンパイラは最初にファイルの最初の部分をコンパイルし、プロバイダーを呼び出して、次に続行します。これは可能ですが、おそらくF#チームの優先順位は低いです。

タイププロバイダへのタイプについての情報を渡すための最良の方法は、(タイプはすでにコンパイル済みのアセンブリからである場合にのみ動作します)それをタイプ名を与え、その後、リフレクションを使用してタイプを検索することです:

type MyTest = MyTypeProvider<"System.Int32"> 
+0

意味があります。だから私の見解では、実行レベルの概念が必要なのです。主な環境に型を与え、外部DLLにressortすることなく、コードが他のより高い実行レベルより前に実行される計算式と同じです。 – nicolas

関連する問題