private TypeInjectionInfo GetTypeInjectionInfo(Type type) { TypeInjectionInfo typeInjectionInfo; if (!_typeInjectionInfos.TryGetValue(type, out typeInjectionInfo)) { typeInjectionInfo = new TypeInjectionInfo(type); _typeInjectionInfos.Add(type, typeInjectionInfo); } return(typeInjectionInfo); }
/// <summary> /// Injects registered types/mappings into an object /// </summary> /// <param name="obj"></param> public void Inject(object obj) { if (obj == null) { return; } Type objectType = obj.GetType(); TypeInjectionInfo typeInjectionInfo = GetTypeInjectionInfo(objectType); for (int i = 0; i < typeInjectionInfo.PropertyInjectionInfos.Length; i++) { var injectionInfo = typeInjectionInfo.PropertyInjectionInfos[i]; injectionInfo.MemberInfo.SetValue(obj, Resolve(injectionInfo.MemberType, injectionInfo.InjectName, false, null), null); } for (int i = 0; i < typeInjectionInfo.FieldInjectionInfos.Length; i++) { var injectionInfo = typeInjectionInfo.FieldInjectionInfos[i]; injectionInfo.MemberInfo.SetValue(obj, Resolve(injectionInfo.MemberType, injectionInfo.InjectName, false, null)); } }