EpiEvents - a library for simpler Episerver event handling
A few months ago I wrote an article about better event handling. Now I have created and published a library which allows you to handle Episerver events in this way easier.
Install the library from the Episerver NuGet Feed:
Install-Package EpiEvents.Core
The library uses MediatR for event publishing and handling. You have to configure it in the StructureMap config.
Scan(x =>
{
x.TheCallingAssembly();
x.ConnectImplementationsToTypesClosing(typeof(INotificationHandler<>));
x.ConnectImplementationsToTypesClosing(typeof(IAsyncNotificationHandler<>));
});
For<SingleInstanceFactory>().Use<SingleInstanceFactory>(ctx => t => ctx.GetInstance(t));
For<MultiInstanceFactory>().Use<MultiInstanceFactory>(ctx => t => ctx.GetAllInstances(t));
For<IMediator>().Use<Mediator>();
You also have to configure default settings for the EpiEvents.
For<EpiEvents.Core.ISettings>().Use<EpiEvents.Core.DefaultSettings>();
Default settings disable all loading events. Loading events cause Episerver to slow down. But you can enable those events in the appSettings.
<add key="EpiEvents:EnableLoadingEvents" value="true" />
Handling of an event is simple. Create MediatR's INotificationHandler with a type parameter of the event you want to handle.
public class SampleHandler : INotificationHandler<CreatedContent>
{
public void Handle(CreatedContent notification)
{
// Handle your event
}
}
For more information see the GitHub page.