Catel.IoC.TypeFactory.InitializeAfterConstruction C# (CSharp) Метод

InitializeAfterConstruction() приватный Метод

Initializes the created object after its construction.
private InitializeAfterConstruction ( object obj ) : void
obj object The object to initialize.
Результат void
        private void InitializeAfterConstruction(object obj)
        {
            if (obj == null)
            {
                return;
            }

            string objectType = ObjectToStringHelper.ToTypeString(obj);

            Log.Debug("Initializing type '{0}' after construction", objectType);

            // TODO: Consider to cache for performance
            var dependencyResolverManager = DependencyResolverManager.Default;
            var dependencyResolver = _serviceLocator.ResolveType<IDependencyResolver>();
            dependencyResolverManager.RegisterDependencyResolverForInstance(obj, dependencyResolver);

            Log.Debug("Injecting properties into type '{0}' after construction", objectType);

            var type = obj.GetType();
            var typeMetaData = GetTypeMetaData(type);
            foreach (var injectedProperty in typeMetaData.GetInjectedProperties())
            {
                var propertyInfo = injectedProperty.Key;
                var injectAttribute = injectedProperty.Value;

                try
                {
                    var dependency = _serviceLocator.ResolveType(injectAttribute.Type, injectAttribute.Tag);
                    propertyInfo.SetValue(obj, dependency, null);
                }
                catch (Exception ex)
                {
                    throw Log.ErrorAndCreateException<InvalidOperationException>(ex, "Failed to set property '{0}.{1}' during property dependency injection", type.Name, propertyInfo.Name);
                }
            }

            var objAsINeedCustomInitialization = obj as INeedCustomInitialization;
            if (objAsINeedCustomInitialization != null)
            {
                objAsINeedCustomInitialization.Initialize();
            }
        }