ConfigurationFileMap
using System.IO;
namespace System.Configuration
{
public class ConfigurationFileMap : ICloneable
{
private Func<string> _getFilenameThunk;
public string MachineConfigFilename {
get {
return _getFilenameThunk();
}
set {
_getFilenameThunk = (() => value);
}
}
internal bool IsMachinePathDefault => _getFilenameThunk == new Func<string>(GetFilenameFromMachineConfigFilePath);
public ConfigurationFileMap()
{
_getFilenameThunk = GetFilenameFromMachineConfigFilePath;
}
public ConfigurationFileMap(string machineConfigFilename)
{
if (string.IsNullOrEmpty(machineConfigFilename))
throw new ArgumentNullException("machineConfigFilename");
if (!File.Exists(machineConfigFilename))
throw new ArgumentException(string.Format(System.SR.Machine_config_file_not_found, machineConfigFilename), "machineConfigFilename");
MachineConfigFilename = machineConfigFilename;
}
private ConfigurationFileMap(ConfigurationFileMap other)
{
_getFilenameThunk = other._getFilenameThunk;
}
public virtual object Clone()
{
return new ConfigurationFileMap(this);
}
private static string GetFilenameFromMachineConfigFilePath()
{
return ClientConfigurationHost.MachineConfigFilePath;
}
}
}