我是Orchard CMS的新手,我已经开始编写我的第一个模块。我一直在寻找一种方法来检测我的模块何时从根网站初始化,但没有运气!果园模块加载事件
一位同事建议使用WebActivator和PreApplicationStartMethod属性来配置启动时要调用的方法,但这不起作用。
有没有人设法做到这一点,有没有像IModule这样的果园提供的接口,将允许我钩入模块初始化?
我是Orchard CMS的新手,我已经开始编写我的第一个模块。我一直在寻找一种方法来检测我的模块何时从根网站初始化,但没有运气!果园模块加载事件
一位同事建议使用WebActivator和PreApplicationStartMethod属性来配置启动时要调用的方法,但这不起作用。
有没有人设法做到这一点,有没有像IModule这样的果园提供的接口,将允许我钩入模块初始化?
你不应该混淆Autofac's和Orchard的模块。 要在Orchard模块启动时执行一些代码,您需要实现IOrchardShellEvents接口(激活方法)。也不要忘记在Autofac注册的实现:
public class MyModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<Bootstrapper>().As<IOrchardShellEvents>().InstancePerLifetimeScope();
}
}
解决!实现Autofac.Module并重载Load(ContainerBuilder)方法!
using Autofac;
public class MyModule : Module
{
protected override void Load(ContainerBuilder builder)
{
// Module initialization here!
}
}
,而这是一个切入点,这是不正确的,看到其他的答案 – 2013-06-13 12:27:48
如果这是在2011年最好的答案,这不是正确的现在回答。使用IOrchardShellEvents或IFeatureEventHandler。 – 2015-01-13 15:46:55
更具体地说,您可能需要IOrchardShellEvents,因为您希望每次Orchard初始化时都会收到通知,而不仅仅是在您的模块首次激活时。 – 2015-01-13 15:58:05
有两个事件处理程序可能会让你感兴趣。 IFeatureEventHandler
和IOrchardShellEvents
。 IFeatureEventHandler
界面为您提供启用,禁用,安装和卸载模块的挂钩。 IOrchardShellEvents
接口为Orchard Shell的激活和终止提供了挂钩。在那里的东西应该为你做的伎俩!
除了我的头脑之外,'IOrchardShellEvents'是'IEventHandler'的一个实现,而'IEventHandler'又是'IDependency'的一个实现,所以我认为你甚至不需要像上面说的那样注册你的实现。你只需要实现'IOrchardShellEvents',Orchard就会为你注册。 – 2014-08-05 13:48:09