Попытка напечатать типовые свойства с foreach l oop (C#) - PullRequest
0 голосов
/ 02 мая 2020

Я работаю над простым консольным приложением. Я хочу, чтобы приложение распечатало таблицу, в которой указаны значения MinValue и MaxValue различных числовых c типов.

У меня есть один оператор Console.WriteLine, который выводит заголовок таблицы.

После этого я хочу, чтобы для каждого типа была напечатана одна строка (с именем типа, MinValue и Maxvalue в качестве столбцов). Конечно, я мог бы сделать это с помощью одного оператора WriteLine для каждого типа, например, для sbyte: typeof (sbyte) .Name, sbyte.MinValue, sbyte.MinValue. Но я подумал, что попытаюсь решить его с помощью foreach l oop.

Вот мой текущий код:

List<Type> types = new List<Type>()
        {
            typeof(sbyte),
            typeof(byte),
            typeof(short),
            typeof(ushort),
            typeof(int),
            typeof(uint),
            typeof(long),
            typeof(ulong),
            typeof(float),
            typeof(double),
            typeof(decimal)
        };

        // Heading
        Console.WriteLine(
            format: "{0,-8} {1,6:N0} {2, 12:N0}",
            arg0: "Type",
            arg1: "Min",
            arg2: "Max");

        foreach (var type in types)
        {
            Console.WriteLine(
                format: "{0,-8} {1,6:N0} {2, 12:N0}",
                arg0: type.Name,
                arg1: type.MinValue,
                arg2: type.MaxValue);
        }

Это работает для свойства Name, но не для MinValue и MaxValue, которые выдают ошибку: (пример MinValue :) «Тип» не содержит определение для MinValue и ни один доступный метод расширения MinValue, принимающий первый аргумент типа «Тип», не может быть найден (вам не хватает директивы using или ссылки на сборку?) "

Я думал, что это будет работать, поскольку все типы в моем списке имеют свойства Min / MaxValue.

Я также пробовал использовать список строк (имена типов, хранящихся в виде строк), что, очевидно, не сработало.

1) Проблема в том, что я пытаюсь использовать переменную в качестве типа?

2) И почему это не проблема со свойством Name?

3) есть способ обойти это, и все еще использую foreach l oop?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...