C # проверить, если объект имеет тип, известный только во время выполнения - PullRequest
1 голос
/ 12 августа 2011

Почему не работают следующие функции?

if(!(obj is (DataGridView1.SortedColumn.ValueType)))

Я получаю сообщение об ошибке типа. Разве ValueType не возвращает тип?

Ответы [ 3 ]

9 голосов
/ 12 августа 2011

ValueType не фактический класс, верно? Это свойство, которое возвращает Type. Чтобы понять это во время выполнения, вам нужно сказать:

if(!(DataGridView1.SortedColumn.ValueType.IsAssignableFrom(obj.GetType())))
5 голосов
/ 12 августа 2011

Измените свой код на

if(obj.GetType() != DataGridView1.SortedColumn.ValueType)

Редактировать Обновлен код для исправления опечаток

2 голосов
/ 12 августа 2011

Нет, свойство ValueType является экземпляром класса Type.Это не сам тип.

Попробуйте это:

if (!(obj.GetType() == DataGridView1.SortedColumn.ValueType))

Однако это не будет учитывать, если obj является производным типом, поэтому, если вам это нужно, у вас будетчтобы стать немного любителем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...