カスタム関数をプラグインとして実装する必要があるデータ ドリブン マッピング アプリケーションがあります。実行する必要があるカスタム メソッドの名前もマッピング データに含まれます。私は、invoke コマンドを使用してメソッドを呼び出すことができることを知っています。しかし、各メソッドに適切な署名があることを確認するにはどうすればよいでしょうか?
3 に答える
まず第一に、オーバーライドされたメソッドに任意の名前を許可するべきではないと思います。インターフェースを定義し、それを単純に保つだけです。
作業を行うメソッドへのデリゲートを返すメソッドを使用してインターフェースを定義できます。
それ以外の場合は、リフレクションを使用して、マップされたメソッドのMethodInfoを取得し、実行時に正しいシグネチャがあることを確認する必要があります。
通常、プラグインアーキテクチャを開発するときは、プラグインで呼び出すメソッドを使用してインターフェイスを定義します。インターフェイスを実装するにはプラグインが必要です。それをロードするとき、それをインターフェースとしてキャストし(それが実装されていない場合、これは失敗します)、それをインターフェースとしてコードで使用します。プラグインの動作がより一般的である場合は、インターフェースをより一般的に定義します。たとえば、構成を使用してプラグインのパラメーターを確立し、引数なしの単純なメソッドを使用してプラグインの機能を呼び出します。事前定義されたインターフェースを使用する方が簡単で、制限しすぎないようにする必要があると思います。
リフレクションを使用する必要があります。
問題のメソッドのMethodInfoオブジェクトを取得するには、最初にGetMethod()メソッドを呼び出す必要があります。
次に、メソッドを使用して.GetParameters()
メソッドのパラメーターを取得する必要があります。次に、それらをメソッドに期待されるものと比較する必要があります。