2011-12-19 57 views
2

我是Orchard CMS的新手,我已经开始编写我的第一个模块。我一直在寻找一种方法来检测我的模块何时从根网站初始化,但没有运气!果园模块加载事件

一位同事建议使用WebActivator和PreApplicationStartMethod属性来配置启动时要调用的方法,但这不起作用。

有没有人设法做到这一点,有没有像IModule这样的果园提供的接口,将允许我钩入模块初始化?

回答

3

你不应该混淆Autofac's和Orchard的模块。 要在Orchard模块启动时执行一些代码,您需要实现IOrchardShellEvents接口(激活方法)。也不要忘记在Autofac注册的实现:

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<Bootstrapper>().As<IOrchardShellEvents>().InstancePerLifetimeScope(); 
    } 
} 
+0

除了我的头脑之外,'IOrchardShellEvents'是'IEventHandler'的一个实现,而'IEventHandler'又是'IDependency'的一个实现,所以我认为你甚至不需要像上面说的那样注册你的实现。你只需要实现'IOrchardShellEvents',Orchard就会为你注册。 – 2014-08-05 13:48:09

0

解决!实现Autofac.Module并重载Load(ContainerBuilder)方法!

using Autofac; 

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     // Module initialization here! 
    } 
} 
+1

,而这是一个切入点,这是不正确的,看到其他的答案 – 2013-06-13 12:27:48

+0

如果这是在2011年最好的答案,这不是正确的现在回答。使用IOrchardShellEvents或IFeatureEventHandler。 – 2015-01-13 15:46:55

+1

更具体地说,您可能需要IOrchardShellEvents,因为您希望每次Orchard初始化时都会收到通知,而不仅仅是在您的模块首次激活时。 – 2015-01-13 15:58:05

5

有两个事件处理程序可能会让你感兴趣。 IFeatureEventHandlerIOrchardShellEventsIFeatureEventHandler界面为您提供启用,禁用,安装和卸载模块的挂钩。 IOrchardShellEvents接口为Orchard Shell的激活和终止提供了挂钩。在那里的东西应该为你做的伎俩!