Reflection in .NET(c#)の経験はほとんどありませんが、使用するには最良の方法を試しています。私の理解はパフォーマンス上の懸念から最小限に、そしてより低いレベルのライブラリ内で使用するのが最善であるということです。これは本当ですか、そうでない場合は、なぜですか?リフレクション(C#)を使用する最適な抽象レベルはどれくらいですか?
答えて
リフレクションは、リフレクションを使用していないほど速くないため、通常は「遅い」プロセスであり、より伝統的な手段で回避できる場合にリフレクションを乱用することはお勧めしません。
ほとんどの人は、それは多くの場合、十分に速く解決策である、と言うだろうといくつかの類似した質問がhereとhere
です。ユースケースが遅すぎるのか、不要かを判断するには、パフォーマンステストを実行する必要があります。
どこで使用するかは本当に重要だとは言いませんが、ビューモデルやASP.NETコントローラで悪用することは、一般的にUIに関連する懸念があるため意味がないかもしれません。しかし、再度、反映が必要な場合についてケースバイケースの決定であるため、本当にあなたは裁判官である必要があります。リフレクションは、下位レベルのライブラリでのみ使用する必要があるという厳しい規則はありません。
リフレクションは多くの問題を解決することができますが、それが最も簡単な解決策であれば、コードをテストしてください。リフレクションが遅くなったら、リファクタリングして他のものを試してみてください。
ありがとう、これは役立ちます。これは重複と見なすことができるため、それをそのようにマークすることはできますか? – ryanwebjackson
@ryanwebjackson私はそれを重複としてフラグを立てた。レビュー中です。 – Carson
@ryanwebjacksonすぐにそれを適用するために提案された複製を受け入れるためのボタンが必要です - 同じ質問があると感じたら – Rob
- 1. JITはどれくらいの命令レベルの最適化を適用できますか?
- 2. データレイヤから適切な量の抽象化は何ですか?
- 3. UITableViewsの最適なセルサイズはどれくらいですか?
- 4. 最適な実行タスク数はどれくらいですか?
- 5. 抽象クラスの抽象メンバを正しく処分するにはどうすればよいですか?
- 6. アドレスなどの抽象モデルにナビゲーションプロパティを適用するのに最適なパターンは?
- 7. xmlhttprequestレベル2の最大ファイルアップロードサイズはどのくらいですか?
- 8. Javaで抽象クラスと抽象メソッドを使用する理由
- 9. クラスファイルの最適サイズはどれくらいですか?
- 10. Androidアプリの最適サイズはどれくらいですか?
- 11. インターフェイスで抽象度のレベルを分離するにはどうすればよいですか?
- 12. 抽象クラスメンバーは保護レベルのためにアクセスできない
- 13. これらの抽象タイプを正しく解決するにはどうすればよいですか?
- 14. C++の抽象クラスで抽象関数を使用できますか?私は抽象メソッドを持つクラスを構築するため
- 15. 基本クラス/抽象クラスでのC#最適な部分インターフェイス実装
- 16. Javaではコンストラクタで抽象メソッドを使用しないでください。
- 17. エラー:クラスが抽象的ではなく、抽象メソッド
- 18. c#インタフェース、抽象クラス、強制継承クラスを抽象クラスではない
- 19. 抽象的なコンポーネントクラスはどのように滑らかな2dで使用されますか?
- 20. ファイルから最適化レベルを決定するにはどうすればよいですか?
- 21. のJava 7ではなくJavaの6:「抽象的ではなく、抽象メソッドをオーバーライドしない」
- 22. 抽象クラスはC#で実装されていますか?
- 23. イベント抽象化の単体テストに最適な方法は?
- 24. このジョブに最適な抽象タイプは?
- 25. ファクトリパターンを抽象クラスで使用する
- 26. コンストラクタで抽象化を使用する
- 27. C#コンパイラまたはJITのどのレベルでアプリケーションコードを最適化しますか?
- 28. たときに抽象クラスを使用すると、C#で
- 29. この場合、最適なテクスチャサイズはどれくらいですか?
- 30. LOG4Jのログファイルに最適なサイズはどれくらいですか?
私の意見では(これはスタックオーバーフローに関するトピック上の質問ではありません)、パフォーマンスは副次的なものです。つまり、言語があなたに提供するすべての型の安全性を失うということです。低レベルのライブラリだけでなく、あらゆるレベルでリフレクションを見つけることができます。 – Rob
リフレクションは、インテリセンスがうまくいかない場合、型チェックを回避し、プライベートメソッド、変数へのアクセスなどのOOP原則を破っています。それは直接的なアプローチよりも遅いですが、システムが複雑すぎると、制御が逆転する場合には実質的に役立ちますが、そこでさえ避けることができるアーキテクチャが重要なユースケースがあります。リファクタリング中に壊れたり、ビルド時にスレッドの安全性チェックが行われません。実際に必要なときや実質的に人生を単純化するときに使用します。 – ipavlu