private static IppConfigurationSectionObj Translator(IppConfigurationSection ippConfigSection)
        {
            // use reflection to translate

            IppConfigurationSectionObj ippConfig = new IppConfigurationSectionObj();

            // converting configuration class to object model
            ippConfig.Logger.RequestSettings.RequestResponseLoggingDirectory = ippConfigSection.Logger.RequestSettings.RequestResponseLoggingDirectory;
            return(ippConfig);
        }
        public static IppConfigurationSection GetConfigurationValue(string configName)
        {
            IppConfigurationSection configValue = null;

            if (configurationPublisher == null)
            {
                throw new InvalidOperationException("Configuration publisher has not been set");
            }
            // Here we can add a piece of code to handle a situation where the user provided delegate does not return a config value. In which case we read from our default config provider
            try
            {
                configValue = (IppConfigurationSection)configurationPublisher(configName);
            }
            catch (ConfigNotAvailableException)
            {
                configValue = GetConfigValuesFromLocal(configName);
            }

            return(configValue);
        }