Пример #1
0
        /// <summary>Gets a instance of postprocessor</summary>
        /// <param name="postProcessorName">Postprocessor name</param>
        /// <returns>Instance of postprocessor</returns>
        public IPostProcessor GetPostProcessorInstance(string postProcessorName)
        {
            IPostProcessor postProcessor1;

            lock (this._postProcessorsPoolSynchronizer)
            {
                if (this._postProcessorsPool.ContainsKey(postProcessorName))
                {
                    postProcessor1 = this._postProcessorsPool[postProcessorName];
                }
                else
                {
                    if (postProcessorName == "NullPostProcessor")
                    {
                        postProcessor1 = (IPostProcessor) new NullPostProcessor();
                    }
                    else
                    {
                        PostProcessorRegistration postProcessor2 = this._assetConfig.PostProcessors[postProcessorName];
                        postProcessor1 = postProcessor2 != null?Utils.CreateInstanceByFullTypeName <IPostProcessor>(postProcessor2.Type) : throw new PostProcessorNotFoundException(string.Format(Strings.Configuration_PostProcessorNotRegistered, (object)this.OutputCodeType, (object)postProcessorName));

                        postProcessor1.UseInDebugMode = postProcessor2.UseInDebugMode;
                    }
                    this._postProcessorsPool.Add(postProcessorName, postProcessor1);
                }
            }
            return(postProcessor1);
        }
        /// <summary>
        /// Gets a instance of postprocessor
        /// </summary>
        /// <param name="postProcessorName">Postprocessor name</param>
        /// <returns>Instance of postprocessor</returns>
        public IPostProcessor GetPostProcessorInstance(string postProcessorName)
        {
            IPostProcessor postProcessor;

            lock (_postProcessorsPoolSynchronizer)
            {
                if (_postProcessorsPool.ContainsKey(postProcessorName))
                {
                    postProcessor = _postProcessorsPool[postProcessorName];
                }
                else
                {
                    if (postProcessorName == Constants.PostProcessorName.NullPostProcessor)
                    {
                        postProcessor = new NullPostProcessor();
                    }
                    else
                    {
                        PostProcessorRegistration postProcessorRegistration = _assetConfig.PostProcessors[postProcessorName];

                        if (postProcessorRegistration == null)
                        {
                            throw new PostProcessorNotFoundException(
                                      string.Format(Strings.Configuration_PostProcessorNotRegistered,
                                                    OutputCodeType, postProcessorName));
                        }

                        string postProcessorFullTypeName = postProcessorRegistration.Type;

                        postProcessor = Utils.CreateInstanceByFullTypeName <IPostProcessor>(postProcessorFullTypeName);
                        postProcessor.UseInDebugMode = postProcessorRegistration.UseInDebugMode;
                    }

                    _postProcessorsPool.Add(postProcessorName, postProcessor);
                }
            }

            return(postProcessor);
        }