Получить путь приложения appdata без Forms-namespace

Я хотел бы получить путь AppData моего текущего приложения. Я использовал для этого с Application.UserAppDataPath, но это в System.Windows.Forms пространство имен, и я хочу избавиться от этого. В любом случае он мне нужен на уровне хранилища и в приложении wpf.

Нет больше причин, чем уменьшать запах.

Твой и БР, Матиас

2 ответа

Решение

Я только что посмотрел в исходный код System.Windows.Forms.dll. Там вы можете найти это:

Разборка Application.LocaluserAppDataPath

Когда я начал клонировать этот код в классе самостоятельно, у меня не получилось после нескольких свойств, других сборок, отражения, помощника 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);
Другие вопросы по тегам