Объедините два контроля в базаре

К сожалению, отражение для получения атрибутов на перечислениях является довольно медленным:

Посмотрите этот вопрос: Кто-либо знает быстрый способ добраться до пользовательских атрибутов на перечислении значений?

Эти .ToString() является довольно медленным на перечислениях также.

можно записать дополнительные методы для перечислений хотя:

public static string GetName( this MyEnum input ) {
    switch ( input ) {
        case MyEnum.WINDOWSAUTHENTICATION:
            return "Windows";
        //and so on
    }
}

Это не является большим, но будет быстрым и не потребует отражения для атрибутов или имени поля.

Обновление C#6

, Если можно использовать C#6 тогда новое nameof работы оператора для перечислений, таким образом nameof(MyEnum.WINDOWSAUTHENTICATION) будет преобразован в "WINDOWSAUTHENTICATION" в время компиляции , делая самым быстрым способом получить перечислимые имена.

Примечание, что это преобразует явное перечисление во встроенную константу, таким образом, это не будет работать на перечисления, которые Вы имеете в переменной. Так:

nameof(AuthenticationMethod.FORMS) == "FORMS"

, Но...

var myMethod = AuthenticationMethod.FORMS;
nameof(myMethod) == "myMethod"

5
задан Dave 25 July 2009 в 16:39
поделиться

2 ответа

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

Однако похоже, что вы хотите, чтобы над «gui» и «engine» работали отдельные разработчики, или вы просто хотите сохранить разрешение конфликтов до завершения разработки в обеих ветвях. В этом случае вам, вероятно, следует создать их как независимые ветки с помощью «bzr branch». Каждая ветка может использовать локальные коммиты и не беспокоиться о конфликтах друг с другом. Затем, когда придет время объединить, вы можете сделать это одним из трех способов, каждый из которых даст одинаковый конечный результат:

1. Слейте одну ветвь с другой, затем отправьте ее в мастер:

cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main

Обратной стороной вышеупомянутого метода является то, что ваша ветка "gui" теперь содержит изменения "движка". Это нормально, если вы собираетесь выбросить обе ветки, когда они возвращаются в основную ветку. Но если вы хотите, чтобы ветви оставались дольше, вы можете:

2. Слияние с основной веткой:

cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit

Плюс в том, что у вас все еще есть «gui» и «engine» как отдельные ветки, но вам нужно было зафиксировать одну для освоения, прежде чем вы были уверены, что они обе будут работать вместе. Итак, вы действительно, вероятно, захотите:

3. Создайте ветку слияния:

bzr branch ~/master gui-engine-merge
cd gui-engine-merge
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
bzr push ~/master
# since this branch was only for merging, you don't need it anymore:
cd ..
rm -r gui-engine-merge
6
ответ дан 14 December 2019 в 13:43
поделиться

Да, bzr должен помешать вам проверить в изменениях из репозитория движка, если он обнаруживает конфликты. Обычно вы сначала выполняете "bzr up" непосредственно перед регистрацией, а затем проверяете, что ваш материал хорошо сочетается с другими.

Что касается второй части вашего вопроса, касающейся ветвей мыши / клавиатуры, я бы сделал следующее. нормально это делаю. Просто перейдите в каталог gui и выполните:

bzr merge ../mouse

После объединения изменений вы можете выполнить фиксацию из каталога gui, и он отправит набор изменений в каталог "master".

Обратите внимание, что я вряд ли bzr, но именно так я имел дело с репозиториями SVN.

0
ответ дан 14 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

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