Возможно, вместо динамического приведения чего-либо (что, похоже, не работает), вы могли бы вместо этого использовать отражение. Достаточно легко получить и вызвать определенные методы или свойства.
Dim t As Type = testObject.GetType()
Dim prop As PropertyInfo = t.GetProperty("propertyName")
Dim gmi As MethodInfo = prop.GetGetMethod()
gmi.Invoke(testObject, Nothing)
Это не красиво, но вы можете сделать это в одной строке вместо многих.