diff --git a/src/LightInject/LightInject.cs b/src/LightInject/LightInject.cs index ca21e0f3..b9241a64 100644 --- a/src/LightInject/LightInject.cs +++ b/src/LightInject/LightInject.cs @@ -2281,6 +2281,7 @@ public ContainerOptions() { EnableVariance = true; EnablePropertyInjection = true; + EnableRegistrationOverriding = false; LogFactory = t => message => { }; } @@ -2325,6 +2326,14 @@ public ContainerOptions() /// public bool EnablePropertyInjection { get; set; } + /// + /// Gets or sets if the Regristrations can be overriden. + /// + /// + /// The default value is false. + /// + public bool EnableRegistrationOverriding { get; set; } + private static ContainerOptions CreateDefaultContainerOptions() { return new ContainerOptions(); @@ -3736,7 +3745,7 @@ private Func CreatePropertyInjectionDelegate(Type conc emitter.Return(); - isLocked = true; + isLocked = !options.EnableRegistrationOverriding; return (Func)methodSkeleton.CreateDelegate(typeof(Func)); } @@ -3788,7 +3797,7 @@ private GetInstanceDelegate CreateDynamicMethodDelegate(Action service emitter.Return(); - isLocked = true; + isLocked = !options.EnableRegistrationOverriding; return (GetInstanceDelegate)methodSkeleton.CreateDelegate(typeof(GetInstanceDelegate)); }