Я должен был проверить, был ли установлен git
как часть развертывания нашего CI-сервера. Мой последний скрипт bash был следующим (сервер Ubuntu):
if ! builtin type -p git &>/dev/null; then
sudo apt-get -y install git-core
fi
Надеюсь, что это поможет кому-то еще!
Я бы не сказал, что вам здесь нужно перечисление. Когда вы упомянули «цветовую схему», обычный способ сделать это - использовать полиморфизм, позволяющий использовать разные цветовые схемы.
Это означает, что у вас будет свой интерфейс, подобный этому:
public interface IColorScheme
{
Color CompanyDarkBlue { get; }
Color CompanyBlue { get; }
Color CompanyLightBlue { get; }
}
, а затем реализовать его любым удобным для вас способом. it:
public class MyColorScheme : IColorScheme
{
public virtual Color CompanyDarkBlue
{
get { return Color.FromArgB(0,56,147); }
}
public virtual Color CompanyBlue
{
get { return Color.FromArgB(0,56,147); }
}
// etc.
}
Обратите внимание, что я также сделал эти свойства виртуальными, чтобы вы могли легко переопределить только определенные цвета, если вам нужна немного другая схема.
Чтобы максимально использовать эту абстракцию, ваша программа должна в основном использовать свойства IColorScheme, не обращая внимания на фактическую используемую реализацию. Соответствующая цветовая схема должна быть создана отдельно во время инициализации.
Вы можете использовать метод расширения. Сначала упростите перечисление:
enum ColorType
{
CompanyDarkBlue,
CompanyBlue,
CompanyLightBlue
}
Метод расширения будет выглядеть примерно так:
public static class ColorTypeExtensions
{
public static Color ToColor(this ColorType colorType)
{
switch(colorType)
{
case ColorType.CompanyDarkBlue: return Color.FromArgB(0,56,147);
...
}
}
}
Это позволит вам написать:
ColorType.CompanyDarkBlue.ToColor();
Для получения дополнительной информации см. C #: Улучшение перечислений с помощью методов расширения
Поместите эти цвета в отдельный класс и поместите их как свойства, а не как перечисление.
public class myColor
{
public static Color CompanyDarkBlue
{
get { return Color.FromArgb(0, 56, 147); }
}
public static Color CompanyBlue
{
get { return Color.FromArgb(0, 111, 198); }
}
public static Color CompanyLightBlue
{
get { return Color.FromArgb(0, 145, 201); }
}
}
Вы можете сохранить ту же информацию в классе с общими полями / свойствами и достичь того же эффекта, что и при перечислении.
Не понимаю, зачем здесь вообще нужна нумерация