T IConfigurationSource.GetConfiguration <T>()
        {
            var sectionName = typeof(T).Name;

            var section = GetConfigurationHandler()
                          .GetSection(sectionName) as T;

            foreach (var property in typeof(T).GetProperties().Where(x => x.DeclaringType == typeof(T)))
            {
                var adjustedPrefix = !string.IsNullOrEmpty(ConfigurationPrefix) ? ConfigurationPrefix + "." : string.Empty;

                var setting = azureConfigurationSettings.GetSetting(adjustedPrefix + sectionName + "." + property.Name);

                if (!string.IsNullOrEmpty(setting))
                {
                    if (section == null)
                    {
                        section = new T();
                    }

                    property.SetValue(section, Convert.ChangeType(setting, property.PropertyType), null);
                }
            }

            return(section);
        }