Приведение не может быть выполнено динамически, потому что его единственная цель - сообщить компилятору, что вы ожидаете, что объект будет определенного типа.Это необходимо для того, чтобы компилятор знал, какие члены содержит объект, когда вы пытаетесь получить к нему доступ.
Следует отметить, что в VB.NET имеется функция под названием позднее связывание , которая позволяет вамполучить доступ к членам типа, заключенного в Object
, просмотрев, существует ли член, к которому вы пытаетесь обратиться, существует во время выполнения.Однако использование позднего связывания не рекомендуется , поскольку очень легко допустить ошибки и взломать код.
Теперь, что касается вашей проблемы: приведение может бытьсделано, если объект имеет определенный тип, или если он наследуется от этого типа.Поскольку я предполагаю, что вы используете элементы управления (которые вы поместили в форму), все они должны наследоваться от System.Windows.Forms.Control
, поэтому вы можете привести их к тому, что содержит базовое свойство Name
:
Select Case DirectCast(sender, Control).Name