私はそうすることに気をつけなければならない落とし穴はありますか?F#の型プロバイダへの入力として型を提供できますか?
遭遇する可能性のある同じコードを扱う既存のコードについて知っていますか?
Thks
私はそうすることに気をつけなければならない落とし穴はありますか?F#の型プロバイダへの入力として型を提供できますか?
遭遇する可能性のある同じコードを扱う既存のコードについて知っていますか?
Thks
残念ながら、あなたはタイププロバイダへの静的パラメータとして型を渡すことはできません。 MyProvider< "first argument", 42 >
を使用して渡された静的パラメータは、プリミティブ型(string
,int
など)でなければなりません。ドキュメントのどこにでもリストは表示されませんが、Type
はサポートされていません。
この問題は、typeof<MyType>
に渡すことができます。ここで、MyType
は型プロバイダを使用しているファイルと同じファイルで宣言されているため、F#コンパイラは最初にファイルの最初の部分をコンパイルし、プロバイダーを呼び出して、次に続行します。これは可能ですが、おそらくF#チームの優先順位は低いです。
タイププロバイダへのタイプについての情報を渡すための最良の方法は、(タイプはすでにコンパイル済みのアセンブリからである場合にのみ動作します)それをタイプ名を与え、その後、リフレクションを使用してタイプを検索することです:
type MyTest = MyTypeProvider<"System.Int32">
意味があります。だから私の見解では、実行レベルの概念が必要なのです。主な環境に型を与え、外部DLLにressortすることなく、コードが他のより高い実行レベルより前に実行される計算式と同じです。 – nicolas