protected ConfigurationBase([NotNull] ITracer tracer)
        {
            Contract.Requires(tracer != null);

            Contract.Assume(!string.IsNullOrEmpty(_directory));

            _tracer   = tracer;
            _filePath = Path.Combine(_directory, FileName);

            try
            {
                Directory.CreateDirectory(_directory);

                using (var reader = new StreamReader(File.OpenRead(_filePath)))
                {
                    _configuration = new XmlConfiguration(tracer, reader);
                    return;
                }
            }
            catch
            {
            }

            _configuration = new XmlConfiguration(tracer);
        }
        protected ConfigurationBase([NotNull] ITracer tracer)
        {
            Tracer    = tracer;
            _filePath = Path.Combine(_directory, FileName);

            try
            {
                Directory.CreateDirectory(_directory);

                using (var reader = new StreamReader(File.OpenRead(_filePath)))
                {
                    _configuration = new XmlConfiguration(tracer, reader);
                    return;
                }
            }
            catch
            {
                // can't read configuration, just go with default.
            }

            _configuration = new XmlConfiguration(tracer);
        }