2013-04-18 4 views
0

В проекте у меня есть 2-3 класса, имеющих пути к моим локальным папкам файловой системы. Как показано ниже:Лучший способ для обработки путей

Класс 1:

private static string UPLOAD_ROOT = "~/Uploads/"; 
private static string IMAGES_FOLDER = "Images"; 

Класс 2:

private static string UPLOAD_ROOT = "~/Uploads/"; 
private static string PSD_FOLDER = "Generated PhotoShop PSDs"; 

Итак, как мы видим, UPLOAD_ROOT повторяется там, где мне это нужно. Я хочу сохранить эти пути в одном файле. Как мне это сделать?

Возможное решение, которое я могу видеть, чтобы поместить эти файлы в статическом классе и использовать его, как показано ниже:

public static class PathSettings 
{ 
    public static string UPLOAD_ROOT = "~/Uploads/"; 
    public static string IMAGES_FOLDER = "Images"; 
    public static string PSD_FOLDER = "Generated PhotoShop PSDs"; 

} 

Затем с помощью этого класса, как показано ниже:

file.SaveAs(PathSettings.UPLOAD_ROOT + filename); 

Как я должен хранить это тогда? Является ли использование статического класса наилучшим решением? Что используется в CMS?

+1

[Обзор Code] (http://codereview.stackexchange.com/)? – Pyromancer

ответ

1

Статический класс с константами совершенно применим. Главным недостатком этого подхода является то, что приложение необходимо перекомпилировать в случае перемещения каталога.

Итак, вы можете рассмотреть возможность перемещения констант в файл приложения web.config. Если вам необходимо выяснить значение, просто вытащить его из файла web.config, как показано в этом ответе:.

Declare a string in Web.Config file

(Не уверен, что если ~ разрешено в web.config строке было бы достаточно легко лавировать его после прочтения)

Edit:.

CMSs обычно используют файлы конфигурация для хранения путей, таких, как эти, а затем обычная статическая библиотека используется, чтобы вытащить обратно информации о пути. Как правило, существует некоторый пользовательский интерфейс для изменения администратором путей, который, в свою очередь, редактирует файл, полный информации о пути.

+0

Нет .. абсолютно нет. Мой 'web.config' уже сложный. Я не хочу вставлять в него столько «ключей». –

+0

Затем создайте свой собственный файл, если хотите, и проанализируйте эту вещь вручную. – debracey

+0

Что вы подразумеваете под «Конфигурационными файлами», используемыми в CMS? Файлы типа 'web.config'? –

2

Поместите их в качестве параметров в свой web.config. Это можно сделать с помощью редактора в визуальной студии: щелкните правой кнопкой мыши проект, выберите свойства. Выберите вкладку «Настройки» слева. Кроме того, в папке «Свойства» в проекте (в обозревателе решений) должен быть файл настроек, который вы можете дважды щелкнуть.

Вы можете получить доступ к значениям здесь, используя Properties.Settings.Default.WhateverSettingName.

Кроме того, для дополнительного кредита создайте объект Path из своей строки и используйте его в остальной части вашей системы.

+0

Я не получаю 'создание объекта Path из вашей строки и использую его в остальной части вашей системы. '? Вы можете это объяснить? –

+0

System.IO.Path - это класс, специально разработанный для работы с файловыми путями. Документация MSDN находится здесь: http://msdn.microsoft.com/en-us/library/system.io.path.aspx Вы получаете множество методов для проверки пути и извлечения из него информации, например, он указывает на файл или папку, это абсолютный путь или относительный путь. Он также будет делать такие вещи, как преобразование относительного пути в полностью квалифицированный путь, основанный на том, что текущий рабочий каталог и т. Д. Это хорошая вещь для использования. – guysherman

1

Если эти постоянные значения изменяются в зависимости от ОС, языка и т. Д., Лучше использовать файлы ресурсов для хранения констант.

при создании пути или URI из строк лучше использовать методы Path Class и Uri Class