示例#1
0
        private TypeInjectionInfo GetTypeInjectionInfo(Type type)
        {
            TypeInjectionInfo typeInjectionInfo;

            if (!_typeInjectionInfos.TryGetValue(type, out typeInjectionInfo))
            {
                typeInjectionInfo = new TypeInjectionInfo(type);
                _typeInjectionInfos.Add(type, typeInjectionInfo);
            }
            return(typeInjectionInfo);
        }
示例#2
0
        /// <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));
            }
        }