Я работаю над методом, использующим отражение для проверки типов параметров методов. Эти методы повторяются через ParameterInfo и делают что-то с типами этих параметров.
Я всегда был в предположении, что если TypeInfo.IsClass true, этот тип является классом и всегда выводится (косвенно) из типа object (за исключением случаев, когда тип object сам, разумеется). Итак, если TypeInfo.IsClass истинно, TypeInfo.BaseType должен быть установлен.
Ну, мое предположение было неправильным! Существуют классы, которые НЕ относятся к типу object. И мое предположение испортило мой код.
Например:
Type type = typeof(int).MakeByRefType();
 type.IsClass будет true, а type.BaseType будет null.
Если вы думаете об этом, это логично. И я могу предотвратить сбой моего кода, проверив TypeInfo.IsByRef.
  Теперь мой вопрос: существуют ли еще такие "экзотические" типы (помимо типов ByRef и type object), которые являются классом (IsClass == true), но не имеют базового типа (BaseType == null)
Прежде чем ответить: я говорю только о типах, где IsClass == true! И мой пример с типом int был всего лишь примером. Это мог быть любой тип.
Поэтому, пожалуйста, нет:
- Интерфейсы
- Структуры
- Пустота
Ответы:
-  Типы ByRef (T&): как указано в вопросе.
-  Типы указателей (T*): Найден Марк Гравелл.
