私はPHPの背景から来て、Wordpressのに非常に多く使用されてきた、私はどのように彼らのプラグインアーキテクチャ作品やイベントにイベントをフックする機能を愛し名前。私が気に入っている最良の部分の1つは、エンドユーザーに表示される直前に任意のデータベース値に* add_filter()*を実行できることです。私の質問は、C#.NET環境でプラグインアーキテクチャ全体をどのように複製するかについての複数の部分です。リストベースのC#(Wordpressのフック/フィルター)でパターンをサブスクライブパブリッシュ
パート1: はプラグインを作成するには、私ははおそらく最高だろうMEF枠組みを研究している(マネージド拡張フレームワーク -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>";
}
OR
例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');
}
Iは私といっしょにあなたのすべてを願っていますか?私はJavaScriptで必要な機能を複製するために管理しているとさえjQueryのは、彼らの.on()イベント機能...同じことが、ベースのチャネルまたはリスト...
私の2例があります。
誰もが正しい方向に私を指すか、これは、C#のためのば完全に間違ったアプローチであることはできますか?
返信いただきありがとうございます。しかし、私はオープンソースのソリューションやリストベースのイベントシステムの単純なレプリケーションにもっと傾いています。誰か他のアイディアを持っていますか? – Aaron