许多流行的应用程序,如Wordpress,WHMCS和大多数PHP论坛都允许插件通过简单地指定具有特定名称的函数来挂钩核心应用程序事件(例如注册,登录,创建帖子等)。
我知道这些应用程序不是预先编译的,但可以用C#做一些这样的事情吗?我已经研究了事件处理程序,但是如果插件能够实例化我们想要挂钩的类(或者至少那些搜索让我相信的那样),你似乎只能实现这一点。
理想情况下,这些钩子会进入业务层类事件/方法,并且可以通过多个对象连接到,因此它可以在WinForms或ASP.NET MVC中运行。
答案 0 :(得分:2)
如果您为可扩展性设计应用程序,这很容易。 Managed Extensibility Framework专为这种情况而设计,非常简单。
它将作为.NET 4核心框架的一部分包含在内,但现在可以下载以便在3.5中使用。
答案 1 :(得分:2)
鉴于Alex的答案,这应该是有用的:
System.AddIn工具和示例
http://clraddins.codeplex.com/
答案 2 :(得分:1)
.NET 3.5附带了一个AddIn框架。该框架提供了非常强大的机制,可以通过宿主应用程序公开接口并管理,动态加载 - 卸载插件等。
答案 3 :(得分:0)
为什么我首先想到的核心概念是依赖注入?我没有在我的任何应用程序中使用插件系统。 DI无论如何都可以帮助吗?
答案 4 :(得分:0)
我们的senerio的细节会有所帮助,但一般来说,您可能想要探索提供者psttern。
有3个组成部分: - 一个功能的抽象,(Interface / baseClass) - 一种Factory方法,用于配置以确定要创建的Class类型 - [您的]自定义类,它扩展/实现抽象。例如,成员资格提供程序类,它会触发用户信息的自定义dasta源。
这在切换逻辑时非常有用。如果您想使用可交换的UI组件创建应用程序,那么这是另一个故事。
ASP.NET中支持这一点,从2.0开始。 有关提供商的更多信息: http://msdn.microsoft.com/en-us/library/ms972319.aspx