私は PHP のバックグラウンドを持っており、Wordpressをかなり使用してきました。Wordpress のプラグイン アーキテクチャのしくみと、イベントをイベント名にフックする機能が気に入っています。私が気に入っている最高の部分の 1 つは、エンド ユーザーに表示される直前に任意のデータベース値に *add_filter()* できることです。私の質問は、C#.NET 環境でプラグイン アーキテクチャ全体を複製する方法に関するマルチパートですか?
パート 1: プラグインを作成するには、MEF フレームワークがおそらく最適であると調査しました ( Managed Extensibility Framework -http://mef.codeplex.com/)。これは、新しいプラグインのディレクトリを監視したり、依存関係やその他の通常のことを追跡したりできるようにすることで、面倒な作業を軽減するように特別に設計されています。MEF は .NET 3.5+ に同梱されています
パート 2 フッキング イベント? グローバル チャネル ベースのイベント システムの複製に関する情報があまり見つかりません。私が持っているものから、パブリッシュ/サブスクライブ パターンが必要です(具体的なオブジェクトをいくつか作成してイベントを与えるだけなので、作成するのはそれほど難しくありません)。難しいのは、各イベントに「チャネル」名を付け、システム全体のすべてのイベントをグローバル コレクション (メディエーター パターン) の一部にすることです。
複製するには: (http://codex.wordpress.org/Function_Reference/add_filter)
例 1
// Add's my button to the end of the content
add_filter('the_content', 'my_plugin_button');
function my_plugin_button( $content ) {
// Add's my button to the end of the content
return $content . "<a href='#'>My button</a>";
}
また
例 2
// Add a new admin menu item by hooking in
add_action('admin_menu', 'my_plugin_menu');
function my_plugin_menu() {
add_options_page('My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options');
}
まだ私と一緒にいることを願っていますか?私はJavascriptで必要な機能を複製することに成功し、jQueryでさえ.on()イベント関数を持っています...同じことですが、チャネルまたはリストベースです...
私の2つの例:
誰かが私を正しい方向に向けることができますか、それともこれはc#の完全に間違ったアプローチですか?