Можно ли осуществить рефакторинг общую функциональность из этих двух методов?

Выполнение Ctrl + C остановит только контейнеры (на самом деле это эквивалентно docker-compose stop), в то время как docker-compose down также удалит остановленные контейнеры и удалит все сети, созданные файлом compose.

Ctrl + C будет работать только в том случае, если все службы не запущены как отдельные (docker-compose up не имеет установленного флага -d)

Что касается рекомендуемого метода, то он действительно зависит от вашего конкретного вариант использования. Если вам нужно только остановить службы, но не удалить контейнеры, docker-compose stop будет достаточно. Если вы хотите перестроить изображения или использовать другие изображения, вам может потребоваться запустить docker-compose down.

7
задан dance2die 9 April 2009 в 20:22
поделиться

5 ответов

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);
22
ответ дан 6 December 2019 в 04:56
поделиться

Я бы использовал 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);
}
19
ответ дан 6 December 2019 в 04:56
поделиться

Вы можете использовать лямбду:

public string ConvertToCSV(Func<CheckBox, string> cb_prop) {
    ...
    buffer.Append(cb_prop(cb)).Append(",");
    ...

}

ConvertToCSV(c => c.Tag);
2
ответ дан 6 December 2019 в 04:56
поделиться

Так как две функции абсолютно одинаковы , за исключением для геттера, именно здесь вы должны начало: движущаяся часть.

Еще не почистил мой 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 ?

0
ответ дан 6 December 2019 в 04:56
поделиться

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(", ");
1
ответ дан 6 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: