//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ namespace System.ServiceModel.Configuration { using System.Configuration; using System.Diagnostics.Contracts; /// /// Binding-related Configuration elements use this base class for WCF-wide commonalities /// public abstract class ServiceModelConfigurationElement : ConfigurationElement { /// /// Used by InitializeFrom() pattern to avoid writing default values to generated .config files. /// /// /// ConfigurationProperty.Name for the configuration property to set /// Value to set protected void SetPropertyValueIfNotDefaultValue(string propertyName, T value) { var configurationProperty = this.Properties[propertyName]; Contract.Assert(configurationProperty != null, "Parameter 'propertyName' should be the name of a configuration property of type T"); Contract.Assert(configurationProperty.Type.IsAssignableFrom(typeof(T)), "Parameter 'propertyName' should be the name of a configuration property of type T"); if (!object.Equals(value, configurationProperty.DefaultValue)) { SetPropertyValue(configurationProperty, value, /*ignoreLocks = */ false); } } } }