私はプラグインとしてカスタム関数を実装する必要があるデータ駆動型マッピングアプリケーションを持っています。私が実行する必要のあるカスタムメソッドの名前も、マッピングデータにあります。私は、invokeコマンドを使ってメソッドを呼び出すことができることを知っています。しかし、どのようにして各メソッドに適切な署名が付いていることを確認できますか?C#でインターフェイスを定義する手助けが必要
答えて
まず第一に、オーバーライドされたメソッドの任意の名前を許可する必要はないと思います。インターフェイスを定義して単純に保つだけです。
作業を行うメソッドにデリゲートを返すメソッドでインターフェイスを定義できます。
それ以外の場合は、マップされたメソッドのMethodInfoを取得し、実行時に正しいシグネチャがあるかどうかを確認するためにリフレクションを使用するだけで済みます。
名前は任意ではありません。社内の開発者は、カスタム関数を作成し、その名前をデータベースに入れてユーザーが特定のマップに適用できるようにします。私のサービスがマップを適用しているときは、タスクを完了するためにカスタム関数を呼び出す必要があります。新しいカスタム関数が必要になるたびにアプリケーションを再コンパイルしないようにしています。率直に言って、リフレクション/インターフェース/デリゲートは、私が慣れていたより少し複雑です。その間、私は早期拘束力を持つことになります。しかし、私はもっと拡張可能な方法でこれを行う方法を知る必要があります。 –
インターフェイスはまったく複雑ではなく、初心者のC#の本でもその使い方を教えてくれます。 –
'カスタム関数' - SQL、C#、または何ですか?あなたのサービスはC#ですか? –
通常、プラグインアーキテクチャを開発するときは、プラグインで呼び出すメソッドを持つインタフェースを定義します。プラグインはインターフェイスを実装する必要があります。ロードすると、インターフェイスとしてキャストされます(実装されていない場合は失敗します)。これをコードとしてインターフェイスとして使用します。プラグインの動作がより一般的な場合は、インターフェイスをより一般的に定義するだけです(たとえば、設定を使用してプラグインのパラメータを設定した後、単純なメソッドを引数なしで使用してプラグインの機能を呼び出すなど)。私はあらかじめ定義されたインターフェイスで作業するほうが簡単だと思っています。
あなたはリフレクションを使用する必要があります。
GetMethod()メソッドを呼び出すと、問題のメソッドに対してMethodInfoオブジェクトが取得されます。
次に、.GetParameters()
メソッドを使用してメソッドにパラメータを保持する必要があります。次に、それらのメソッドが持つ期待値と比較する必要があります。
- 1. PHPを削る手助けが必要
- 2. JenkinsでSphinxを設定するのに手助けが必要
- 3. APIをデータパワーで設定するのに手助けが必要
- 4. TFS 2010ビルド定義を作成するのに手助けが必要
- 5. PSQLの設定をリセットするのに手助けが必要
- 6. 設定の手助けが必要です。Pygame
- 7. Androidスタジオを起動するだけで、手助けが必要
- 8. カードの手札を描く手助けが必要です
- 9. データベース構築の手助けが必要
- 10. 返信の手助けが必要
- 11. ツイストプロキシ作成の手助けが必要
- 12. Umbracoでメンバーをプログラムで作成する手助けが必要
- 13. HttpClientをHttpURLConnectionに変換する手助けが必要です
- 14. htaccessをISAPI_Rewriteに変換する手助けが必要です
- 15. 擬似コードをCに変換する手助けが必要です
- 16. wchar_tを別のものに追加する手助けが必要です! C++
- 17. DJangoでベースシリアライザを実装するのに手助けが必要
- 18. JFrameでJTextFieldを整理する手助けが必要
- 19. SNMPでハンドルを取得するのに手助けが必要
- 20. Pythonでkikボットを設定する手助けが必要です
- 21. MySQL不要な行を削除するためにSQLを定義する手助けが必要
- 22. クラス(C#、ASP.Net、MVC)内でコレクションを作成/使用する手助けが必要
- 23. ArkanoidでC#、助けが必要
- 24. はC#のゲームコードで助けが必要
- 25. django-filetransfersの設定の手助けが必要
- 26. 反応ホットローダーの設定の手助けが必要
- 27. SSLPeerUnverifiedExceptionの特定と修正の手助けが必要
- 28. 設定ファイルの作成に手助けが必要
- 29. スタックトレースバイトオフセットからソースコードラインを見つける手助けが必要
- 30. サウンドクリップをムービークリップアイテムに付ける手助けが必要
例を挙げることができますか? –