Как получить все системные типы или встроенные типы, используемые в классе С#

Я пытаюсь перечислить все типы систем, используемые в классе С#. Например,

class Program
{
    static void Main(string[] args)
    {
        int i = 0;
        Console.WriteLine(i.ToString());
    }
    private void SomeMethod(float parm1, double param2)
    {
        Assembly assembly = Assembly.LoadFrom(@"AssemblyName");
    }
}

Здесь я хочу перечислить,

  1. Int32
  2. Консоль
  3. Пустота
  4. Сборка
  5. плавать
  6. двойной
  7. нить

Как это сделать?


person Meikanda Nayanar . I    schedule 09.02.2016    source источник
comment
Это даже компилируется?   -  person Sadique    schedule 09.02.2016
comment
@Sadiq: Извините, теперь я отредактировал вопрос.   -  person Meikanda Nayanar . I    schedule 09.02.2016
comment
Вы можете просто перебирать члены (методы и свойства) с помощью отражения и находить необходимую информацию о типе. Это часть int, которая делает этот вопрос сложным. Я не думаю, что ответчики здесь поняли суть вашего вопроса. Хороший вопрос, +1   -  person nawfal    schedule 09.02.2016
comment
Как вы определяете типы систем?   -  person SLaks    schedule 09.02.2016
comment
Как это связано с roslyn?   -  person Paulo Morgado    schedule 09.02.2016
comment
@SLaks: здесь системные типы означают определенные Microsoft типы (а не пользовательские типы) в проекте C#. Пока я узнаю полное имя типов, они будут начинаться с пространства имен System.xxx. Это может потерпеть неудачу, если мы дадим свои собственные пространства имен, такие как System.OurCustom.XXX, но не найдем другого лучшего способа.   -  person Meikanda Nayanar . I    schedule 10.02.2016
comment
@PauloMorgado: я достигаю этого с помощью Roslyn, создавая SemanticModel классов. Затем перебираем объявления полей, свойств и методов в классе. Если я нашел объявление, то я проверю, является ли это типом System или нет (см. предыдущий комментарий для SLaks). Я хотел бы знать, является ли это единственным способом или существует какой-либо другой лучший способ.   -  person Meikanda Nayanar . I    schedule 10.02.2016
comment
Таким образом, вы можете определить свое состояние системного типа как что-то вроде того, что определено в сборке, или определено в сборке, подписанной ключом Microsoft, или рядом других возможных способов сделать это.   -  person Jason Malinowski    schedule 12.02.2016


Ответы (1)


Посмотрите на Как перебирать встроенные типы в С#?

typeof(int).Assembly.GetTypes().Where(t => t.IsPrimitive);
person Mahesh Malpani    schedule 09.02.2016
comment
Это вернет только основные примитивные типы. С этим можно использовать типы Assembly и Void. - person Meikanda Nayanar . I; 09.02.2016
comment
вам нужно прокрутить список сборки. сборки var = AppDomain.CurrentDomain.GetAssemblies(); или все сборки от GAC - person Mahesh Malpani; 09.02.2016