В результате возникает несоответствие пространства имен. Если вы щелкнете правой кнопкой мыши по MyClass в своем примере и выберете «Перейти к определению», куда он вас приведет? Я подозреваю, что вы можете оказаться в локально определенном классе.
Решение состоит в том, чтобы изменить
Dim arr() As MyClass
до
Dim arr() As MYWS.MyClass
Обновление на основе информации в комментариях
Проблема с использованием веб-службы заключается в том, что вы не можете привести его к локальному классу.
У вас есть несколько вариантов, в зависимости от того, что именно вам нужно из местного класса.
Если вам нужны только методы для работы с данными в классе или вам нужны дополнительные свойства, вы можете создать частичный класс в вашей среде, который расширяет класс, созданный веб-службой. Например:
Namespace MYWS
Public Partial Class MyClass
Public Property SomeAdditionalData As String
Public Sub SomeMethod
' Perform some operations on the class members
End Sub
End Class
End Namespace
Однако, если у вас есть расчеты или другая работа, встроенная в класс, вам потребуется получить данные с использованием класса веб-службы, а затем скопировать данные из этого класса в ваш локальный класс. Если свойства имеют одинаковые имена, вы можете облегчить эту задачу с помощью отражения.
В качестве другого варианта, если у вас есть контроль над веб-службой, вы можете изменить ее на службу WCF. Это позволит вам повторно использовать один и тот же код класса на обоих концах канала связи.