Inhalt
Erweiterbarkeit
LightCore ist an zwei Punkten erweiterbar:
- Lifecycles
- Registration Modules
Lifecycles
Mehr Informationen zu den schon vorhandenen Lifecycles und das Prinzip dahinter, gibt es unter
Lifecycles.
Um einen neuen Lifecycle zu erstellen, muss das Interface ILifecycle implementiert werden:
/// <summary>
/// Represents a lifecycle where instances can be reused.
/// </summary>
public interface ILifecycle
{
/// <summary>
/// Handle the reuse of instances.
/// </summary>
/// <param name="newInstanceResolver">The function for lazy get an instance.</param>
object ReceiveInstanceInLifecycle(Func<object> newInstanceResolver);
}
Die Methode bekommt eine Factory für die aufzulösende Instanz.
Diese kann aufgerufen und das Resultat direkt zurückgegeben werden, das entspräche
der Implementierung TransientLifecycle, die in LightCore schon eingebaut ist.
Registration Module
Die Xml-Registrierung von LightCore enthält eine RegistrationModule Implementierung,
die es ermöglicht, die Daten aus der Xml-Datei mit einer Nachberarbeitung zu registrieren.
Die abstrakte Klasse für ein neues RegistrationModule ist einfach gehalten:
/// <summary>
/// Represents an abstract registration module for implementing custom registrations.
/// </summary>
public abstract class RegistrationModule
{
/// <summary>
/// Registers all candidates.
/// </summary>
/// <param name="containerBuilder">The ContainerBuilder.</param>
public abstract void Register(IContainerBuilder containerBuilder);
}
LightCore ruft die Register()-Methode auf, wenn das Modul bekannt gemacht worden ist.
Einer Implementierung von RegistrationModule könnte beispielsweise eine Erweiterung darstellen,
um Registrierungen über Konventionen zum Teil automatisieren kann.