public object Resolve(IBuilderContext context)
 {
     Guard.ArgumentNotNull(context, "context");
     NamedTypeBuildKey key = new NamedTypeBuildKey(type, name);
     IBuilderContext recursiveContext = context.CloneForNewBuild(key, null);
     return recursiveContext.Strategies.ExecuteBuildUp(recursiveContext);
 }
        /// <summary>
        /// This method supports the Enterprise Library infrastructure and is not intended to be used directly from your code.
        /// Builds an <see cref="LoggingExceptionHandler"/> based on an instance of <see cref="LoggingExceptionHandlerData"/>.
        /// </summary>
        /// <seealso cref="ExceptionHandlerCustomFactory"/>
        /// <param name="context">The <see cref="IBuilderContext"/> that represents the current building process.</param>
        /// <param name="objectConfiguration">The configuration object that describes the object to build. Must be an instance of <see cref="LoggingExceptionHandlerData"/>.</param>
        /// <param name="configurationSource">The source for configuration objects.</param>
        /// <param name="reflectionCache">The cache to use retrieving reflection information.</param>
        /// <returns>A fully initialized instance of <see cref="LoggingExceptionHandler"/>.</returns>
        public IExceptionHandler Assemble(IBuilderContext context,
                                          ExceptionHandlerData objectConfiguration,
                                          IConfigurationSource configurationSource,
                                          ConfigurationReflectionCache reflectionCache)
        {
            LoggingExceptionHandlerData castedObjectConfiguration
                = (LoggingExceptionHandlerData)objectConfiguration;

            LogWriter writer;

            if (castedObjectConfiguration.UseDefaultLogger)
            {
                writer = Logger.Writer;
            }
            else
            {
                IBuilderContext logWriterContext = context.CloneForNewBuild(NamedTypeBuildKey.Make <LogWriter>(), null);
                writer = (LogWriter)logWriterContext.Strategies.ExecuteBuildUp(logWriterContext);
            }

            LoggingExceptionHandler createdObject
                = new LoggingExceptionHandler(
                      castedObjectConfiguration.LogCategory,
                      castedObjectConfiguration.EventId,
                      castedObjectConfiguration.Severity,
                      castedObjectConfiguration.Title,
                      castedObjectConfiguration.Priority,
                      castedObjectConfiguration.FormatterType,
                      writer);

            return(createdObject);
        }
Esempio n. 3
0
        public static object Resolve(IBuilderContext context,
                                     object buildKey,
                                     NotPresentBehavior behavior)
        {
            Guard.ArgumentNotNull(context, "context");
            Guard.ArgumentNotNull(buildKey, "buildKey");

            if (context.Locator.Contains(buildKey))
            {
                return(context.Locator.Get(buildKey));
            }

            switch (behavior)
            {
            case NotPresentBehavior.Build:
                IBuilderContext recursiveContext = context.CloneForNewBuild(buildKey, null);
                return(recursiveContext.Strategies.ExecuteBuildUp(recursiveContext));

            case NotPresentBehavior.Null:
                return(null);

            case NotPresentBehavior.Throw:
                throw new DependencyMissingException(buildKey);

            default:
                throw new ArgumentException(
                          string.Format(CultureInfo.CurrentCulture,
                                        Resources.UnknownNotPresentBehavior,
                                        behavior));
            }
        }
Esempio n. 4
0
        public object Resolve(IBuilderContext context)
        {
            Guard.ArgumentNotNull(context, "context");
            IBuilderContext recursiveContext = context.CloneForNewBuild(typeToBuild, null);

            return(recursiveContext.Strategies.ExecuteBuildUp(recursiveContext));
        }
Esempio n. 5
0
        public object Resolve(IBuilderContext context)
        {
            Guard.ArgumentNotNull(context, "context");
            NamedTypeBuildKey key = new NamedTypeBuildKey(type, name);
            IBuilderContext   recursiveContext = context.CloneForNewBuild(key, null);

            return(recursiveContext.Strategies.ExecuteBuildUp(recursiveContext));
        }
 /// <summary>
 /// Get the value for a dependency.
 /// </summary>
 /// <param name="context">Current build context.</param>
 /// <returns>The value for the dependency.</returns>      
 public object Resolve(IBuilderContext context)
 {
     if (context == null)
      {
     throw new ArgumentNullException("context");
      }
      IBuilderContext recursiveContext = context.CloneForNewBuild(new NamedTypeBuildKey(typeToBuild), null);
      return recursiveContext.Strategies.ExecuteBuildUp(recursiveContext);
 }
        /// <summary>
        /// Get the value for a dependency.
        /// </summary>
        /// <param name="context">Current build context.</param>
        /// <returns>The value for the dependency.</returns>
        public object Resolve(IBuilderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            IBuilderContext recursiveContext = context.CloneForNewBuild(new NamedTypeBuildKey(typeToBuild), null);

            return(recursiveContext.Strategies.ExecuteBuildUp(recursiveContext));
        }
        object IDependencyResolverPolicy.Resolve(IBuilderContext context)
        {
            IList result = (IList)Activator.CreateInstance(collectionType);

            foreach (string key in keys)
            {
                IBuilderContext buildContext = context.CloneForNewBuild(new NamedTypeBuildKey(elementType, key), null);
                result.Add(buildContext.Strategies.ExecuteBuildUp(buildContext));
            }
            return(result);
        }
Esempio n. 9
0
        object IDependencyResolverPolicy.Resolve(IBuilderContext context)
        {
            TDictionary dictionary = new TDictionary();

            foreach (KeyValuePair <string, TKey> keyPair in dependencyKeys)
            {
                IBuilderContext buildContext = context.CloneForNewBuild(NamedTypeBuildKey.Make <T>(keyPair.Key), null);
                T createdElement             = (T)buildContext.Strategies.ExecuteBuildUp(buildContext);
                dictionary.Add(keyPair.Value, createdElement);
            }
            return(dictionary);
        }
        public object[] GetParameters(IBuilderContext context,
                                      ConstructorInfo constructor)
        {
            Guard.ArgumentNotNull(constructor, "constructor");
            ParameterInfo[] parms           = constructor.GetParameters();
            object[]        parmsValueArray = new object[parms.Length];

            for (int i = 0; i < parms.Length; ++i)
            {
                IBuilderContext recursiveContext = context.CloneForNewBuild(
                    GetBuildKeyFromType(parms[i].ParameterType), null);
                parmsValueArray[i] = recursiveContext.Strategies.ExecuteBuildUp(recursiveContext);
            }

            return(parmsValueArray);
        }
        public override TraceListener Assemble(IBuilderContext context,
                                               TraceListenerData objectConfiguration,
                                               IConfigurationSource configurationSource,
                                               ConfigurationReflectionCache reflectionCache)
        {
            FormattedDatabaseTraceListenerData castedObjectConfiguration
                = (FormattedDatabaseTraceListenerData)objectConfiguration;
            IBuilderContext databaseContext
                = context.CloneForNewBuild(
                      NamedTypeBuildKey.Make <Data.Database>(castedObjectConfiguration.DatabaseInstanceName), null);

            Data.Database database
                = (Data.Database)databaseContext.Strategies.ExecuteBuildUp(databaseContext);
            ILogFormatter formatter
                = GetFormatter(context, castedObjectConfiguration.Formatter, configurationSource, reflectionCache);
            TraceListener createdObject
                = new FormattedDatabaseTraceListener(
                      database,
                      castedObjectConfiguration.WriteLogStoredProcName,
                      castedObjectConfiguration.AddCategoryStoredProcName,
                      formatter);

            return(createdObject);
        }
 public object Resolve(IBuilderContext context)
 {
     Guard.ArgumentNotNull(context, "context");
     IBuilderContext recursiveContext = context.CloneForNewBuild(typeToBuild, null);
     return recursiveContext.Strategies.ExecuteBuildUp(recursiveContext);
 }
Esempio n. 13
0
        /// <summary>
        /// A convenience method to do a new buildup operation on an existing context.
        /// </summary>
        /// <remarks>This helper is specific to NamedTypeBuildKey.</remarks>
        /// <typeparam name="T">Type to return from the buildup.</typeparam>
        /// <param name="context">Existing context.</param>
        /// <returns>The built up object.</returns>
        public static T NewBuildUp <T>(IBuilderContext context)
        {
            IBuilderContext clone = context.CloneForNewBuild(NamedTypeBuildKey.Make <T>(), null);

            return((T)(clone.Strategies.ExecuteBuildUp(clone)));
        }
        object IDependencyResolverPolicy.Resolve(IBuilderContext context)
        {
            IBuilderContext recursiveContext = context.CloneForNewBuild(this.referenceKey, null);

            return(recursiveContext.Strategies.ExecuteBuildUp(recursiveContext));
        }