実行時にオブジェクトがFSharp.Coreライブラリを参照せずにC#レコードタイプであるかどうかをチェックする方法はありますか?実行時にC#からF#レコードタイプを検出する
答えて
レコードタイプは、編集時に[<CompilationMapping(SourceConstructFlags.RecordType)>]
属性でマークされます。これはFSharpType.IsRecord
が探しているものです。実装はhereです。差別化された組合も同様の方法でマークされます。
FSharp.Core
タイプを明示的に参照することなくそのロジックを再実装することができます。つまり、名前で属性を検索し、一致する属性データにSourceConstructFlags
という独自のコピーを持つことができます。
私は基本的にこの結論に達しました。これはすでに誰かによって行われたかどうか私は多かれ少なかれ疑問に思った。ありがとう! –
FSharp.Coreを参照せずにF#ライブラリを消費することはまれであると考えて、人々は単に 'FSharpType.IsRecord'を使うと仮定します。 – Tarmil
@Tarmil:これは確かです.Newtonsoft.Json(依存関係を避けるために 'FSharp.Core'ロジックのいくつかを再実装したと仮定しています)は実際にリフレクションコードを再利用するために' FSharp.Core'を動的にロードします。 ](https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/FSharpUtils.cs)。 – scrwtp
- 1. 実行時にCでOSを検出する方法
- 2. F#JSON文字列を正しいレコードタイプに逆シリアル化する
- 3. 実行時にARMv8 A53とA57アーキテクチャを検出しますか?
- 4. 実行時にスタックオーバーフローを事前に検出する
- 5. C#からF#
- 6. 実行時にルビーバイナリのコンパイルレイアウトを検出する
- 7. 実行時に$ GOHOSTOSと$ GOHOSTARCHを検出する方法は?
- 8. 実行時にi3/i5/i7 Intel Coreファミリを検出する
- 9. 実行時にハードウェアアクセラレーションを検出する:Android
- 10. NSISから既に実行中のJavaアプリケーションを検出する
- 11. Java - 実行時のメモリスワップの検出
- 12. C#からF#クラスへの移行
- 13. emacs-gitから "git checkout -f"を実行するには?
- 14. 実行時にデバッグまたはリリースビルドを実行するかどうかを検出する
- 15. 実行時に関数呼び出しをスキップするC++
- 16. Redshift:検出とキャンセルユーザーごとに長時間実行するクエリ
- 17. F#にキー付きレコードタイプがあります
- 18. 実行F#コードは、F#は
- 19. 実行時に障害が検出されましたか?
- 20. 実行時にContextDeadlockSwitchを検出します
- 21. 実行時にviewedViewControllerを検出します
- 22. qtが実行時にデバッグビルドを実行しているかどうかを検出します。
- 23. 実行時にjarファイルからメソッドを呼び出す方法
- 24. 実行時にSwiftアプリケーションからスクリプトを呼び出す
- 25. 同時実行の問題を検出するためのツール
- 26. CコードをC#から実行する
- 27. 実行時にshell_execを出力する
- 28. c#実行時描画オブジェクトからクリックイベントを送信する
- 29. C関数からnode.jsスクリプトを呼び出す/実行する
- 30. 実行時に出力からepydoc出力を取得していますか?
「FSharp.Core」を参照するだけではどうですか? – scrwtp
基本的に1つの関数のライブラリに依存関係を追加すると、別のライブラリの依存関係ツリーが壊れてしまいます。 –
これは当てはまりますが、すでにF#レコードの認識に気を配っていれば、とにかくその依存関係が必要な場合があります。 – scrwtp