Как создать список System.Types из литерала? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть несколько типов:

public ClassA
{
}

public ClassB
{
}

public ClassC
{
}

Теперь я хотел бы сохранить некоторые из них в списке?

Некоторые из неудачных подходов, которые я пробовал:

List<System.Type> allowedTypes = new List<System.Type>{ ClassA, ClassC };

List<System.Type> allowedTypes = new List<System.Type>{ System.Type.GetType(ClassA), Systme.Type.GetType(ClassC) };

List<System.Type> allowedTypes = new List<System.Type>{ ClassA.GetType(), ClassC.GetType() };

Рабочие подходы, о которых я знаю, кажутся довольно громоздкими:

List<System.Type> allowedTypes = new List<System.Type>{ new ClassA().GetType(), new ClassB().GetType() };

Этот подход громоздок, поскольку требует, чтобы ClassA и ClassC были специально подготовлены для такого использования.

List<System.Type> allowedTypes = new List<System.Type>{ System.Type.GetType("ClassA"), System.Type.GetType("ClassC") };

Если нет способа избавиться от этих волшебных ниточек, тогда, я думаю, мне следует их обнять ...

1 Ответ

0 голосов
/ 01 июня 2018

Правильным подходом будет выражение typeof :

List<System.Type> allowedTypes = 
        new List<System.Type>(){ typeof(ClassA), typeof(ClassC) };
...