Определение имени исходного репозитория, из которого вы клонировали в Git

Вместо использования пользовательского ModelBinder вы также можете использовать пользовательский тип с TypeConverter.

[TypeConverter(typeof(StrListConverter))]
public class StrList : List<string>
{
    public StrList(IEnumerable<string> collection) : base(collection) {}
}

public class StrListConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        return sourceType == typeof(string) || base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
        if (value == null)
            return null;

        if (value is string s)
        {
            if (string.IsNullOrEmpty(s))
                return null;
            return new StrList(s.Split(','));
        }
        return base.ConvertFrom(context, culture, value);
    }
}

Преимущество состоит в том, что он делает параметры метода Web API очень простыми. Вам даже не нужно указывать [FromUri].

public IEnumerable<Category> GetCategories(StrList categoryIds) {
  // code to retrieve categories from database
}

Этот пример для списка строк, но вы можете сделать categoryIds.Select(int.Parse) или просто написать IntList вместо этого.

106
задан Peter Mortensen 9 October 2019 в 12:41
поделиться

1 ответ

Я наткнулся на этот вопрос, пытающийся добираться эти organization/repo строка от хоста мерзавца как GitHub или gitlab.

Это работает на меня:

git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).get/\1/'

Это использует sed для замены вывода эти git config команда только с организацией и именем repo.

Что-то как github/scientist было бы подобрано классом символов [[:graph:]] в регулярном выражении.

Эти \1 говорит sed заменять все просто подобранными символами.

0
ответ дан 24 November 2019 в 03:50
поделиться
Другие вопросы по тегам:

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