Как мне узнать, является ли тип «простым» типом? т.е. содержит единственное значение
typeof(string).IsPrimitive == false
typeof(int).IsPrimitive == true
typeof(MyClass).IsClass == true
typeof(string).IsClass == true
typeof(string).IsByRef == false
typeof(MyClass).IsByRef == true // correction: should be false (see comments below)
У меня есть метод, который создает новый экземпляр T и, если это «сложный» класс, заполняет его свойства из набора значений исходных данных.
(a) Если T - простой тип (например, строка или int или что-либо подобное), должно быть выполнено быстрое преобразование из исходных данных в T.
(b) Если T - это класс (но не что-то простое, например строка), тогда я буду использовать Activator.CreateInstance и немного поразмышляю, чтобы заполнить поля.
Есть ли быстрый и простой способ определить, следует ли мне использовать метод (а) или метод (б)? Эта логика будет использоваться внутри универсального метода с T в качестве аргумента типа.