diff --git a/src/Assets/Adic/CHANGELOG.txt b/src/Assets/Adic/CHANGELOG.txt
index f28a65d..95494d1 100644
--- a/src/Assets/Adic/CHANGELOG.txt
+++ b/src/Assets/Adic/CHANGELOG.txt
@@ -5,6 +5,11 @@ Copyright (c) 2014-2016 André "Intentor" Martins
http://intentor.com.br/
------------------------------------------------
+Version 2.20.2 (2016-08-11)
+
+Framework
+- Fix singleton binding when ResolutionMode is RETURN_NULL. [Issue #54]
+
Version 2.20.1 (2016-08-03)
Commander extension
diff --git a/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs b/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs
index 5ae824c..85e40a8 100644
--- a/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs
+++ b/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs
@@ -51,7 +51,7 @@ public Injector(IReflectionCache cache, IBinder binder, ResolutionMode resolutio
/// Type to be resolved.
/// The instance or NULL.
public T Resolve() {
- return (T)this.Resolve(typeof(T), InjectionMember.None, null, null);
+ return (T)this.Resolve(typeof(T), InjectionMember.None, null, null, false);
}
///
@@ -64,7 +64,7 @@ public T Resolve() {
/// Identifier to look for.
/// The instance or NULL.
public T Resolve(object identifier) {
- return (T)this.Resolve(typeof(T), InjectionMember.None, null, identifier);
+ return (T)this.Resolve(typeof(T), InjectionMember.None, null, identifier, false);
}
///
@@ -76,7 +76,7 @@ public T Resolve(object identifier) {
/// Type to be resolved.
/// The instance or NULL.
public object Resolve(Type type) {
- return this.Resolve(type, InjectionMember.None, null, null);
+ return this.Resolve(type, InjectionMember.None, null, null, false);
}
///
@@ -89,7 +89,7 @@ public object Resolve(Type type) {
/// The instance or NULL.
public object Resolve(object identifier) {
//Given no type will be passed, it'll always resolve an array.
- var instances = (object[])this.Resolve(null, InjectionMember.None, null, identifier);
+ var instances = (object[])this.Resolve(null, InjectionMember.None, null, identifier, false);
if (instances != null && instances.Length > 0) {
return instances[0];
@@ -108,7 +108,7 @@ public object Resolve(object identifier) {
/// Identifier to look for.
/// The instance or NULL.
public object Resolve(Type type, object identifier) {
- return this.Resolve(type, InjectionMember.None, null, identifier);
+ return this.Resolve(type, InjectionMember.None, null, identifier, false);
}
///
@@ -185,7 +185,8 @@ public object[] ResolveAll(Type type, object identifier) {
/// Member for which the binding is being resolved.
/// Parent object in which the resolve is occuring.
/// The binding identifier to be looked for.
- protected object Resolve(Type type, InjectionMember member, object parentInstance, object identifier) {
+ /// Always resolve the type, even when resolution mode is null.
+ protected object Resolve(Type type, InjectionMember member, object parentInstance, object identifier, bool alwaysResolve) {
object resolution = null;
if (this.beforeResolve != null) {
@@ -227,7 +228,7 @@ protected object Resolve(Type type, InjectionMember member, object parentInstanc
IList