путь и папка приложения #CSharp
/// <summary> Класс помошник для текущего приложения </summary>
public class Assistant
{
/// <summary> Возвращает полный путь до текушего приложения </summary>
public static string ApplicationFileName
{
get
{
lock (private_ApplicationFileName)
{
if (!String.IsNullOrWhiteSpace(private_ApplicationFileName))
return private_ApplicationFileName.Clone() as string;
private_ApplicationFileName = Process.GetCurrentProcess().MainModule.FileName;
return private_ApplicationFileName.Clone() as string;
}
}
}
/// <summary> Возвращает полный путь до текушего приложения </summary>
private static string private_ApplicationFileName = "";
/// <summary> Возвращает папку, откуда было запущено приложение </summary>
public static string ApplicationPath
{
get
{
lock (private_ApplicationPath)
{
if (!String.IsNullOrWhiteSpace(private_ApplicationPath))
return private_ApplicationPath.Clone() as string;
private_ApplicationPath = Path.GetDirectoryName(ApplicationFileName);
return private_ApplicationPath.Clone() as string;
}
}
}
/// <summary> Возвращает папку, откуда было запущено приложение </summary>
private static string private_ApplicationPath = "";
/// <summary> Возвращает файл настроек для текущего приложения </summary>
public static string SettingsFile
{
get
{
lock (private_SettingsFile)
{
if (!String.IsNullOrWhiteSpace(private_SettingsFile))
return private_SettingsFile.Clone() as string;
List<string> listSettingsFile = new List<string>()
{
Path.Combine(ApplicationPath , "Settings.config"),
Path.Combine(ApplicationPath , "..", "..", "Settings.config"),
}.Where(x => File.Exists(x)).ToList();
private_SettingsFile = listSettingsFile.FirstOrDefault() ?? "";
if (String.IsNullOrWhiteSpace(private_SettingsFile))
return "";
return new FileInfo(private_SettingsFile).FullName;
}
}
}
/// <summary> Возвращает файл настроек для текущего приложения </summary>
private static string private_SettingsFile = "";
/// <summary> Указатель на настройки приложения </summary>
private static XmlDocument private_Settings { set; get; }
/// <summary> Блокировщик одновременного дустыпа к private_Settings </summary>
private static object lock_private_settings = new object();
/// <summary> Время последней модификации файла настроек </summary>
private static DateTime last_changed_settings = new DateTime();
/// <summary> Указатель на настройки приложения </summary>
public static XmlDocument Settings
{
get
{
lock(lock_private_settings)
{
FileInfo file = new FileInfo(SettingsFile);
if (file.LastWriteTime < last_changed_settings && private_Settings != null)
return private_Settings;
private_Settings = new XmlDocument();
private_Settings.Load(SettingsFile);
last_changed_settings = DateTime.Now;
return private_Settings;
}
}
}
}