Выполнение Ctrl + C остановит только контейнеры (на самом деле это эквивалентно docker-compose stop
), в то время как docker-compose down
также удалит остановленные контейнеры и удалит все сети, созданные файлом compose.
Ctrl + C будет работать только в том случае, если все службы не запущены как отдельные (docker-compose up
не имеет установленного флага -d
)
Что касается рекомендуемого метода, то он действительно зависит от вашего конкретного вариант использования. Если вам нужно только остановить службы, но не удалить контейнеры, docker-compose stop
будет достаточно. Если вы хотите перестроить изображения или использовать другие изображения, вам может потребоваться запустить docker-compose down
.
public string GetAsCsv(Func<CheckBox, string> getValue)
{
var buffer = new StringBuilder();
foreach (var cb in SelectedCheckBoxes)
{
buffer.Append(getValue(cb)).Append(",");
}
return DropLastComma(buffer.ToString());
}
Тогда:
GetAsCsv(cb => cb.Tag != null ? cb.Tag.ToString() : string.Empty);
GetAsCsv(cb => cb.Text);
Я бы использовал string. Заходите вместо
:
string tags = string.Join(",",
SelectedCheckBoxes.Select(cb => Convert.ToString(cb.Tag))
.ToArray());
string text = string.Join(",",
SelectedCheckBoxes.Select(cb => cb.Text).ToArray());
Конечно, вы могли бы поставить это в метод, но я, вероятно, не стал бы беспокоиться только о двух вызовах.
Если бы вы захотели, вот как это выглядело бы при использовании шаблона Брайана:
public string GetAsCsv(Func<CheckBox, string> getValue)
{
string[] array = SelectedCheckBoxes.Select(getValue).ToArray();
return string.Join(",", array);
}
Вы можете использовать лямбду:
public string ConvertToCSV(Func<CheckBox, string> cb_prop) {
...
buffer.Append(cb_prop(cb)).Append(",");
...
}
ConvertToCSV(c => c.Tag);
Так как две функции абсолютно одинаковы , за исключением для геттера, именно здесь вы должны начало: движущаяся часть.
Еще не почистил мой C #, но что-то вроде:
public string GetCsv(Func<string> getter)
{
var buffer = new StringBuilder();
foreach (var cb in SelectedCheckBoxes)
{
buffer.Append(getter()).Append(",");
}
return DropLastComma(buffer.ToString());
}
должно работать. Также сделайте переменную SelectedCheckBoxes
?
I'd just write a short extension method around IEnumerable string that took a separator:
public static string Join(this IEnumerable<string> strings, string separator)
{
return string.Join(separator, strings.ToArray());
}
then you can do:
var text = SelectedCheckBoxes.Select(cb => cb.Text).Join(", ");
var tags = SelectedCheckBoxes.Select(cb => (string)cb.Tag).Join(", ");