Как определить, является ли тип объекта встроенным системным типом

Я пишу простой конвертер List в CSV. Мой конвертер проверяет все t в List, захватывает все общедоступные свойства и помещает их в CSV.

Мой код отлично работает (как и предполагалось), когда вы будете использовать простой класс с несколькими свойства.

Я хотел бы получить преобразователь List в CSV, чтобы также принимать системные типы, такие как String и Integer. С этими типами систем я не хочу получать их общедоступные свойства (такие как Длина, Chars и т. Д.). Таким образом, я хотел бы проверить, является ли объект системным типом. Под типом системы я подразумеваю один из встроенных типов .Net, такой как string, int32, double и т. Д.

Используя GetType (), я могу узнать следующее:

string myName = "Joe Doe";

bool isPrimitive = myName.GetType().IsPrimitive; // False
bool isSealed = myName.GetType().IsSealed; // True 
// From memory all of the System types are sealed.
bool isValueType = myName.GetType().IsValueType; // False

// LinqPad users: isPrimitive.Dump();isSealed.Dump();isValueType.Dump();

Как мне узнать, если переменная myName является встроенным системным типом? (при условии, что мы не знаем, что это строка)

39
задан Jeremy 9 May 2011 в 04:41
поделиться