public override void ValidateAfterChildrenAdded() { base.ValidateAfterChildrenAdded(); var defaultSerializer = OROptimizer.Serializer.TypeBasedSimpleSerializerAggregator.GetDefaultSerializerAggregator(); var serializerAggregatorObject = _createInstanceFromTypeAndConstructorParameters.CreateInstance(this, typeof(ITypeBasedSimpleSerializerAggregator), _serializerAggregatorType, _parameters?.AllParameters ?? Array.Empty <IParameterElement>()); TypeBasedSimpleSerializerAggregator = (ITypeBasedSimpleSerializerAggregator)serializerAggregatorObject; if (_parameterSerializersCollection != null) { foreach (var parameterSerializer in _parameterSerializersCollection.AllSerializers) { if (parameterSerializer.Serializer == null) { LogHelper.Context.Log.WarnFormat("The value of '{0}.{1}' should not be null.", typeof(IParameterSerializer).FullName, nameof(IParameterSerializer.Serializer)); continue; } var defaultSerializerForType = defaultSerializer.GetSerializerForType(parameterSerializer.Serializer.SerializedType); if (defaultSerializerForType != null) { LogHelper.Context.Log.InfoFormat("Replacing default serializer for type '{0}' with a serializer '{1}'. The default serializer was '{2}'.", parameterSerializer.Serializer.SerializedType.GetTypeNameInCSharpClass(), parameterSerializer.Serializer.GetType().GetTypeNameInCSharpClass(), defaultSerializerForType.GetType().GetTypeNameInCSharpClass()); TypeBasedSimpleSerializerAggregator.UnRegister(parameterSerializer.Serializer.SerializedType); } TypeBasedSimpleSerializerAggregator.Register(parameterSerializer.Serializer); } } foreach (var serializer in defaultSerializer.GetRegisteredSerializers()) { if (!TypeBasedSimpleSerializerAggregator.HasSerializerForType(serializer.SerializedType)) { TypeBasedSimpleSerializerAggregator.Register(serializer); } } LogSerializersData(); }
public override object GenerateValue() { return(_createInstanceFromTypeAndConstructorParameters.CreateInstance(this, ValueTypeInfo.Type, Parameters?.AllParameters, InjectedProperties?.AllProperties)); }
public override void ValidateAfterChildrenAdded() { base.ValidateAfterChildrenAdded(); Type validBaseType = null; if (typeof(IDiModule).IsAssignableFrom(_typeInfo.Type)) { validBaseType = typeof(IDiModule); } else if (_configuration.DiManagers.ActiveDiManagerElement.DiManager.ModuleType.IsAssignableFrom(_typeInfo.Type)) { validBaseType = _configuration.DiManagers.ActiveDiManagerElement.DiManager.ModuleType; } else { _isDiManagerInactive = true; // If this is a native module, lets see if there is any non-active dependency manager module, // for which the type is correct. IDiManagerElement ownerDiManagerElement = null; var validModuleTypes = new List <Type>(); foreach (var diManagerElement in _configuration.DiManagers.AllDiManagers) { validModuleTypes.Add(diManagerElement.DiManager.ModuleType); if (diManagerElement == _configuration.DiManagers.ActiveDiManagerElement) { continue; } if (diManagerElement.DiManager.ModuleType.IsAssignableFrom(_typeInfo.Type)) { ownerDiManagerElement = diManagerElement; validBaseType = diManagerElement.DiManager.ModuleType; break; } } if (ownerDiManagerElement == null) { var errorMessage = new StringBuilder(); errorMessage.Append($"Invalid type for module: '{_typeInfo.TypeCSharpFullName}'.The type used as a module should be one of the following types or a subclass of any of these types: '{typeof(IDiModule).FullName}'"); foreach (var valdModuleType in validModuleTypes) { errorMessage.Append($", '{valdModuleType.FullName}'"); } errorMessage.Append("."); throw new ConfigurationParseException(this, errorMessage.ToString()); } LogHelper.Context.Log.DebugFormat("Note, the module '{0}' is disabled since dependency injection manager '{1}' that handles the module is not the active dependency injection manager. The active dependency injection manager is '{2}'.", _typeInfo.TypeCSharpFullName, ownerDiManagerElement.Name, _configuration.DiManagers.ActiveDiManagerElement.Name); } if (validBaseType != null && !_isDiManagerInactive && this.Enabled) { DiModule = _createInstanceFromTypeAndConstructorParameters.CreateInstance(this, validBaseType, _typeInfo.Type, _parameters?.AllParameters ?? new IParameterElement[0]); LogHelper.Context.Log.InfoFormat("Created an instance of dependency injection module: {0}.", _typeInfo.TypeCSharpFullName); } }
public override void ValidateAfterChildrenAdded() { base.ValidateAfterChildrenAdded(); Instance = (TInstantiatedType)_createInstanceFromTypeAndConstructorParameters.CreateInstance(this, typeof(TInstantiatedType), ValueTypeInfo.Type, _parameters?.AllParameters ?? new IParameterElement[0]); }