gpt4 book ai didi

c# - c# 中基于列表的发布订阅模式(Wordpress Hook /过滤器)

转载 作者:行者123 更新时间:2023-11-30 18:40:07 25 4
gpt4 key购买 nike

我有 PHP 背景并且经常使用 Wordpress,我喜欢他们的插件架构 的工作方式以及将事件 Hook 到事件名称的能力。我喜欢它的最好的部分之一是能够在它显示给最终用户之前*add_filter()*到任何数据库值。我的问题是关于如何在 C#.NET 环境中复制整个插件架构的多部分问题?

第 1 部分:为了创建插件,我研究过 MEF 框架 可能是最好的(托管可扩展性框架 -http://mef.codeplex.com/)。这是专门为通过让您能够监视新插件的目录、跟踪依赖关系和其他正常事物的能力来解决繁重的工作而设计的。 MEF 附带 .NET 3.5+

第 2 部分 Hook 事件?我似乎找不到太多关于复制基于全局 channel 的事件系统的信息。从目前的情况来看,我需要一个发布/订阅模式(这并不难实现,因为您只需创建一些具体对象并为它们提供事件)。困难的部分是为每个事件指定一个“ channel ”名称,并使整个系统中的所有事件成为全局集合的一部分(调解器模式)。

要复制:(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() 事件函数……同样的事情,但基于 channel 或列表……

我的两个例子:

谁能给我指出正确的方向,或者这对 c# 来说是完全错误的方法吗?

最佳答案

我认为NServiceBus可以帮助您解决这些问题。 Udi Dahan NServiceBus的作者也写了很多关于领域事件模式的文章,领域事件模式是一种发布/订阅机制。

关于c# - c# 中基于列表的发布订阅模式(Wordpress Hook /过滤器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com