Получить путь приложения appdata без Forms-namespace
Я хотел бы получить путь AppData моего текущего приложения. Я использовал для этого с Application.UserAppDataPath, но это в System.Windows.Forms
пространство имен, и я хочу избавиться от этого. В любом случае он мне нужен на уровне хранилища и в приложении wpf.
Нет больше причин, чем уменьшать запах.
Твой и БР, Матиас
2 ответа
Я только что посмотрел в исходный код System.Windows.Forms.dll. Там вы можете найти это:
Когда я начал клонировать этот код в классе самостоятельно, у меня не получилось после нескольких свойств, других сборок, отражения, помощника aso. Поэтому я написал ОЧЕНЬ ПРОСТОЙ класс самостоятельно.
public static string LocalUserAppDataPath
{
get
{
return GetDataPath(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
}
}
private static string GetDataPath(string basePath)
{
string format = @"{0}\{1}\{2}\{3}";
string companyName = "YOUR_COMPANYNAME";
string productName = "PRODUCTNAME";
string productVersion = "PRODUCTVERSION";
object[] args = new object[] { basePath, companyName, productName, productVersion };
string path = string.Format(CultureInfo.CurrentCulture, format, args);
return path;
}
Я знаю, что есть некоторые жестко закодированные строки. Но сейчас, ссылаясь на ваши ограничения, я бы попробовал этот код.
Может быть, вы можете попробовать это с SpecialFolder
?
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
или же
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);