diff --git a/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs b/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs index 9640463..bef51d7 100644 --- a/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs +++ b/src/Assets/Adic/Scripts/Framework/Injection/Injector.cs @@ -339,7 +339,10 @@ protected void InjectFields(object instance, AcessorInfo[] fields) { var field = fields[fieldIndex]; var value = field.getter(instance); - if (value == null || "null".Equals(value.ToString())) { + + //The Equals(null) comparison is used to ensure correct null evaluation due to the null trick + //Unity uses for objects derived from UnityEngine.Object. + if (value == null || value.Equals(null)) { var valueToSet = this.Resolve(field.type, InjectionMember.Field, field.name, instance, field.identifier, false); field.setter(instance, valueToSet); @@ -360,7 +363,10 @@ protected void InjectProperties(object instance, AcessorInfo[] properties) { var property = properties[propertyIndex]; var value = property.getter == null ? null : property.getter(instance); - if (value == null || "null".Equals(value.ToString())) { + + //The Equals(null) comparison is used to ensure correct null evaluation due to the null trick + //Unity uses for objects derived from UnityEngine.Object. + if (value == null || value.Equals(null)) { var valueToSet = this.Resolve(property.type, InjectionMember.Property, property.name, instance, property.identifier, false); property.setter(instance, valueToSet);