Только не ругайтесь, пожалуйста. Я изучаю чужой код и некоторые моменты не понимаю.
public class PathToBaseDirectory : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string currentDirectory = System.Environment.CurrentDirectory;
if (currentDirectory.EndsWith("\\bin\\Debug"))
{
int index = currentDirectory.IndexOf("\\bin\\Debug");
currentDirectory = currentDirectory.Substring(0, index);
}
return currentDirectory + value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return "";
}
}
Мне не особо понятны следующие строки :
int index = currentDirectory.IndexOf("\\bin\\Debug");
currentDirectory = currentDirectory.Substring(0, index);
Обязательно ли это в своих проектах прописывать? что вообще происходит?
Скорее всего это какой-то костыль для запуска приложения из-под студии.
Обычно все, что нужно приложению, лежит в папке с результатами компиляции. В студии это обычно bin\Debug
в папке проекта. Скорее всего тот, чей код вы изучаете, или не знал как скопировать дополнительный контент (через Copy to output directory в свойствах), или решил это не делать по каким-то своим причинам.
Поэтому под отладкой у вас приложение пытается выпрыгнуть в папку проекта и поискать файлы контента там (через обрезание bin\Debug
). В релизе, скорее всего, файлы контента копировались к бинарникам вручную.
Нет, в своих проектах такое прописывать необязательно. Это костыль для какой-то местной ситуации. Правильно - помечать проектные файлы контента/данных, с которыми вам нужно работать, флагом Copy to output directory = true.
Вообще, это написано криво. В данном случае обрезается \bin\Debug
в конце.
if (currentDirectory.EndsWith("\\bin\\Debug")) // Если текущая директория - дебаг
{
int index = currentDirectory.IndexOf("\\bin\\Debug"); // найди индекс старта
currentDirectory = currentDirectory.Substring(0, index); // возьми строку с начала до этого индекса
}
Вполне достаточно было бы написать
const string endsWith = @"\bin\Debug";
if (currentDirectory.EndsWith(endsWith))
{
currentDirectory = currentDirectory.Substring(0, currentDirectory.Length - endsWith.Length);
}
Еще по-хорошему следует добавить #if DEBUG
, ибо, скорее всего, это должно использоваться только под дебагом.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Создал простое приложение mvc, в представлении (вьюхе) есть главный шаблон примерно такой:
Я хочу сделать чат-бота по типа: ключевое слово-ответЯ понимаю, как его реализовать, но структуризация вводит меня в ступор
У меня есть таблица, которая имеет столбцы number и balanceЯ хочу вывести данные, хранящиеся в них на страницу