Переменная содержащая тип

200
25 февраля 2018, 22:51

Доброго времени суток. Для своего проекта понадобилось в переменную засунуть тип данных. Приведу пример:

var type = int;
float b = 1.0f;
type a = 1;
int c = (type)b;

Есть еще метод GetType, где в условии с помощью typeof можно проверить соответствие типов, но как сделать так, чтобы в переменную сохранить тип и дальше обращаться к переменной и использовать сохраненный тип?

Уточнения: есть класс Table, которые содержит в себе 7 свойств. Среди них встречаются свойства типа int, float, DateTime, string. Еще в этом же классе определен enum Category, в котором перечислены все эти свойства. Далее определен метод GеtCategory(enum Category type), который возвращает object. По сути вы указываете имя свойства через enum и он вам возвращает значение этого свойства, а так как типы разные, возвращает object. Далее в другом классе существует метод, который должен из списка List{Table} вернуть список одного из его свойств, но так как я опять же не знаю какoй тип будет выбран, возвращает он просто object. Но, когда мне пришлось использовать оператор "+=" object не прокатил.

Используемый метод:

public static object GetOriginalOptions(Table.Category type)
    {
        Type obj = new Table().GetCategory(type).GetType();
        WriteAndRead file = new WriteAndRead();
        List<Table> list = Table; list.Sort();
        if (obj == typeof(int))
        {
            List<int> options = new List<int>();
            options.Add((int)list[0].GetCategory(type));
            for (int i = 1, j = 0; i < list.Count; i++)
                if (list[i].Date == list[i - 1].Date)
                    options[j] += (int)list[i].GetCategory(type);
                else if (list[i].Date != list[i - 1].Date)
                {
                    options.Add((int)list[i].GetCategory(type));
                    j++;
                }
        }
        else if (obj == typeof(float))
        {
            List<float> options = new List<float>();
            options.Add((float)list[0].GetCategory(type));
            for (int i = 1, j = 0; i < list.Count; i++)
                if (list[i].Date == list[i - 1].Date)
                    options[j] += (float)list[i].GetCategory(type);
                else if (list[i].Date != list[i - 1].Date)
                {
                    options.Add((float)list[i].GetCategory(type));
                    j++;
                }
        }
        return GetOptions(type);
    }
READ ALSO
C# Красивая упаковка доп. файлов из чужого nuget

C# Красивая упаковка доп. файлов из чужого nuget

У меня есть сборка - exe-шник и несколько dll для работы с программойУстанавливал их из Nuget

180
Из RichTextBox в массив

Из RichTextBox в массив

Мне нужно ввести в программу данные такого вида:

247
Помогите с управлением C#

Помогите с управлением C#

У меня вопросКак мне сделать элементы управления на другой форме

170
Аналог UploadString на питоне

Аналог UploadString на питоне

Нужен аналог uploadString для питона, что бы данные поступали в php://input

172