これはばかげた質問かもしれません。申し訳ありませんが、この種のことは初めてです。
ミラーに関するドキュメントを読んだ後、ミラー API はインスタンスをコピーするだけでなく、いつ/なぜ使用するかわからないメソッドにアクセスするようなものであることがわかります。
誰かが私にいくつかの指針を教えてくれます。いくつかの例がいいでしょう。
これはばかげた質問かもしれません。申し訳ありませんが、この種のことは初めてです。
ミラーに関するドキュメントを読んだ後、ミラー API はインスタンスをコピーするだけでなく、いつ/なぜ使用するかわからないメソッドにアクセスするようなものであることがわかります。
誰かが私にいくつかの指針を教えてくれます。いくつかの例がいいでしょう。
ミラー API を使用すると、オブジェクトと型に関するメタデータをプログラムで (実行中に) 取得し、オブジェクトでメソッドを実行できます。これは、.NET または Java のリフレクションに似ています。
典型的な例は、プラグイン サポートの実装です。
インターフェイスを定義し、それを実装する各型のインスタンスIPlugin
を自動的に登録したいとしますPluginManager
。新しい実装ごとに明示的に登録する必要はありません。ユーザーが独自のプラグインを展開できるかどうかなど、事前にすべてのプラグインを把握していない場合もあります。
次のようにすることもできます (警告: Mirror API を使用したことがないため、これは API ドキュメントに基づく高レベルの説明であり、適切な実装ではありません):
MirrorSystem.libraries
を取得するために使用しますLibraryMirror
MirrorSystem
LibraryMirror
使用してライブラリ内の各クラスを取得しますclasses
ClassMirror
ClassMirror
使用するたびsuperinterfaces
に、実装されたすべてのインターフェースを取得するIPlugin
ある場合、そのクラス ( ) のインスタンスを作成し、ClassMirror.newInstance
それをプラグイン マネージャーに登録できます。ミラー API がなければ、すべての型を列挙したり、それらが実装するインターフェイスを見つけたり (オブジェクトを作成せずに)、事前にわからない型のインスタンスを作成したりすることはできません。
正直に言うと、Dart のミラー API の現在の状態がどのようなものかはわかりません。まだ完成していないと思いますが、間違っている可能性があります。