Строка. Параметр формата заказывает раздражение

Если Вы не планируете создание Вашего собственного выпадающего списка (и не использование стандартного выпадающего списка библиотеки), Вы застреваете. Взгляд управления DDL будет основанным на системе, которую Вы выполняете и/или браузер, который представляет вывод.

7
задан SteveC 5 August 2015 в 09:55
поделиться

3 ответа

Ну, в C # нет ничего, что могло бы делать это автоматически для тебя. Вы всегда можете написать свой собственный метод, но, честно говоря, я считаю его менее читабельным. Нужно подумать гораздо больше (ИМО), чтобы понять, что делает ваша последняя строка, чем предыдущая. Когда вы нажимаете {2} , вы

24
ответ дан 6 December 2019 в 05:49
поделиться

Несмотря на то, что C # не может сделать это за вас, этот инструмент может здесь помочь.

Resharper, например, предупредит вас, если в строке больше параметров, чем после строки. Я посмотрел, поддерживается ли переупорядочение параметров в Resharper, но в данном случае это не так (R # поддерживает изменение сигнатуры метода, но здесь это не помогает).

Посмотрите на Code Rush от DevEx. Скорее всего, у этого инструмента есть то, что вам нужно.

1
ответ дан 6 December 2019 в 05:49
поделиться

Запрашиваемая функция не является частью платформы. Вот хороший метод расширения, который я нашел, который предоставляет именованные параметры c #. Я думаю, что это опубликовал Марк Гравелл или один из тех других гуру SO.

        static readonly Regex rePattern = new Regex(@"\{([^\}]+)\}", RegexOptions.Compiled);


    /// <summary>
    /// Shortcut for string.Format. Format string uses named parameters like {name}.
    /// 
    /// Example: 
    /// string s = Format("{age} years old, last name is {name} ", new {age = 18, name = "Foo"});
    ///
    /// </summary>
    /// <param name="format"></param>
    /// <param name="values"></param>
    /// <returns></returns>
    public static string FN<T>(this string pattern, T template)
    {
        Dictionary<string, string> cache = new Dictionary<string, string>();
        return rePattern.Replace(pattern, match =>
        {
            string key = match.Groups[1].Value;
            string value;

            if (!cache.TryGetValue(key, out value))
            {
                var prop = typeof(T).GetProperty(key);
                if (prop == null)
                {
                    throw new ArgumentException("Not found: " + key, "pattern");
                }
                value = Convert.ToString(prop.GetValue(template, null));
                cache.Add(key, value);
            }
            return value;
        });
    }
2
ответ дан 6 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

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