ServiceModelEnhancedConfigurationElementCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / ServiceModelEnhancedConfigurationElementCollection.cs / 1 / ServiceModelEnhancedConfigurationElementCollection.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------

namespace System.ServiceModel.Configuration 
{
    using System.Configuration; 
    using System.Collections.Generic; 
    using System.Diagnostics;
    using System.Globalization; 
    using System.ServiceModel.Diagnostics;


    public abstract class ServiceModelEnhancedConfigurationElementCollection : ServiceModelConfigurationElementCollection 
        where TConfigurationElement : ConfigurationElement, new()
    { 
        internal ServiceModelEnhancedConfigurationElementCollection(string elementName) 
            : base(ConfigurationElementCollectionType.AddRemoveClearMap, elementName)
        { 
            this.AddElementName = elementName;
        }

        protected override void BaseAdd(ConfigurationElement element) 
        {
            if (null == element) 
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("element");
            } 

            // Is this a duplicate key?
            object newElementKey = this.GetElementKey(element);
            if (this.ContainsKey(newElementKey)) 
            {
                ConfigurationElement oldElement = this.BaseGet(newElementKey); 
                if (null != oldElement) 
                {
                    // Is oldElement present in the current level of config 
                    // being manipulated (i.e. duplicate in same config file)
                    if (oldElement.ElementInformation.IsPresent)
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException( 
                            SR.GetString(SR.ConfigDuplicateKeyAtSameScope, this.ElementName, newElementKey)));
                    } 
                    else if (DiagnosticUtility.ShouldTraceWarning) 
                    {
                        Dictionary values = new Dictionary(6); 
                        values.Add("ElementName", this.ElementName);
                        values.Add("Name", newElementKey.ToString());
                        values.Add("OldElementLocation", oldElement.ElementInformation.Source);
                        values.Add("OldElementLineNumber", oldElement.ElementInformation.LineNumber.ToString(NumberFormatInfo.CurrentInfo)); 
                        values.Add("NewElementLocation", element.ElementInformation.Source);
                        values.Add("NewElementLineNumber", element.ElementInformation.LineNumber.ToString(NumberFormatInfo.CurrentInfo)); 
 
                        DictionaryTraceRecord traceRecord = new DictionaryTraceRecord(values);
                        TraceUtility.TraceEvent(TraceEventType.Warning, 
                            TraceCode.OverridingDuplicateConfigurationKey,
                            traceRecord,
                            this,
                            null); 
                    }
                } 
            } 
            base.BaseAdd(element);
        } 

        protected override bool ThrowOnDuplicate
        {
            get { return false; } 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK