我来自 PHP 背景,并且经常使用Wordpress,我喜欢他们的插件架构的工作原理以及将事件与事件名称挂钩的能力。我喜欢它的最好的部分之一是能够在向最终用户显示之前将 *add_filter()* 添加到任何数据库值。我的问题是关于如何在 C#.NET 环境中复制整个插件架构的多部分?
第 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>";
}
或者
示例 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# 来说是完全错误的方法吗?