/// <summary>
        /// Fetches the configuration by id.
        /// </summary>
        /// <param name="configurationDataId">The configuration data id.</param>
        /// <returns></returns>
        public virtual ConfigurationDatum FetchConfigurationById(int configurationDataId)
        {
            Validator.ValidateIntegerIsGreaterThanZero(configurationDataId,
            ConfigurationContants.ARGUMENT_CONFIGURATION_DATA_ID);

              ConfigurationDatumCollection configurationDatumCollection =
            new ConfigurationDatumController().FetchByID(configurationDataId);

              ConfigurationDatum configurationDatum = null;
              if (configurationDatumCollection.Count == 1) {
            configurationDatum = configurationDatumCollection[0];
              }
              return configurationDatum;
        }
        /// <summary>
        /// Fetches the configuration by name.
        /// </summary>
        /// <param name="configurationSectionName">Name of the configuration section.</param>
        /// <returns></returns>
        public virtual object FetchConfigurationByName(string configurationSectionName)
        {
            Validator.ValidateStringArgumentIsNotNullOrEmptyString(configurationSectionName, CONFIGURATION_SECTION_NAME);

              ConfigurationDatum configurationDatum =
            new ConfigurationDatumController().FetchConfigurationByName(configurationSectionName);

              object obj = null;

              if (configurationDatum != null) {
            Serializer serializer = new Serializer();
            obj = serializer.DeserializeObject(configurationDatum.ValueX, configurationDatum.Type);
              }
              return obj;
        }
        /// <summary>
        /// Fetches the configuration by name.
        /// </summary>
        /// <param name="configurationSectionName">Name of the configuration section.</param>
        /// <returns></returns>
        public virtual object FetchConfigurationByName(string configurationSectionName)
        {
            Validator.ValidateStringArgumentIsNotNullOrEmptyString(configurationSectionName, CONFIGURATION_SECTION_NAME);

            ConfigurationDatum configurationDatum =
                new ConfigurationDatumController().FetchConfigurationByName(configurationSectionName);

            object obj = null;

            if (configurationDatum != null)
            {
                Serializer serializer = new Serializer();
                obj = serializer.DeserializeObject(configurationDatum.ValueX, configurationDatum.Type);
            }
            return(obj);
        }
        /// <summary>
        /// Fetches the configuration by id.
        /// </summary>
        /// <param name="configurationDataId">The configuration data id.</param>
        /// <returns></returns>
        public virtual ConfigurationDatum FetchConfigurationById(int configurationDataId)
        {
            Validator.ValidateIntegerIsGreaterThanZero(configurationDataId,
                                                       ConfigurationContants.ARGUMENT_CONFIGURATION_DATA_ID);

            ConfigurationDatumCollection configurationDatumCollection =
                new ConfigurationDatumController().FetchByID(configurationDataId);

            ConfigurationDatum configurationDatum = null;

            if (configurationDatumCollection.Count == 1)
            {
                configurationDatum = configurationDatumCollection[0];
            }
            return(configurationDatum);
        }