Bobo wrote:1. Объясните, зачем кастить к типу, неизвестному в compile-time? Вы же не можете объявить переменную этого типа, зачем тогда к нему кастить?
Например, тип построен динамически, через type factory.
Bobo wrote:2. Binder здесь ни при чем. Разумнее было предложить Convert.ChangeType(), но это тоже совсем не то.
Да, спасибо, это у меня уже почти работает.
Bobo wrote:3. btw не используйте CType для кастинга, это очень плохой стиль. Лучше всего не используйте CType вообще. Для кастинга есть DirectCast, а для конвертирования - Convert.
OK
Я вообще кастинг стараюсь не употреблять. Просто, здесь случай, когда объект полученный из внешнего ассембли в результате вызова Activator.CreateInstance(тип) не показывается правильно в Property Grid. Кастингом на известный тип я пытаюсь поправить ситуацию. Пока не очень получается - половина атрибутов класса присутствует (типа простых description, category), а половина - нет (сложные: custom editor, convertor) .
Еще, ко всему, у меня имеется проблема при серилизации/десерилизации этих объектов с помощью BinaryFormatter-а. При десерелизации простого объекта я получаю ошибку, что класс должен имплементировать IConvertible. А для более сложного, с атрибутами custom editor и converter, BinaryFormatter вообще говорит "Object type can not be converted to target type", и это в строчке:
Code: Select all
Dim newObj As Object = binFormatter.Deserialize(fileStream)