Add NULL as a first class citizen of the Unity Container

This commit is contained in:
Eugene Sadovoi 2019-04-02 18:44:28 -04:00
Родитель f55ee30026
Коммит 0d79a06eec
3 изменённых файлов: 3 добавлений и 3 удалений

Просмотреть файл

@ -65,7 +65,7 @@ namespace Unity.Strategies
context.RequiresRecovery = recoveryPolicy;
var existing = policy.GetValue(context.Lifetime);
if (existing != null)
if (LifetimeManager.NoValue != existing)
{
context.Existing = existing;
context.BuildComplete = true;

Просмотреть файл

@ -114,7 +114,7 @@ namespace Unity
try
{
// Validate input
if (null == instance) throw new ArgumentNullException(nameof(instance));
if (null == typeFrom) throw new InvalidOperationException($"At least one of Type arguments '{nameof(type)}' or '{nameof(instance)}' must be not 'null'");
if (null == lifetimeManager) lifetimeManager = new ContainerControlledLifetimeManager();
if (((LifetimeManager)lifetimeManager).InUse) throw new InvalidOperationException(LifetimeManagerInUse);

Просмотреть файл

@ -440,7 +440,7 @@ namespace Unity
var lifetimeManager = (LifetimeManager)parentRef.Get(typeof(LifetimeManager));
var result = lifetimeManager?.GetValue();
if (null != result) return result;
if (LifetimeManager.NoValue != result) return result;
throw new InvalidOperationException($"Circular reference for Type: {parentRef.Type}, Name: {parentRef.Name}",
new CircularDependencyException());