以编程方式设置对象数组对象

时间:2012-02-22 16:37:04

标签: vb.net

我有

Public stack() As CTest

我想要

Public stack() As Object

后者给出错误“无法将'Object'类型的对象强制转换为'CTest'。”使用时:

Dim thestack As CTest() = testdatabase.getStack

testdatabase.getStack只返回stack();

Public Function getStack() As Object()
    Return stack
End Function

这解决了它,但它并不理想(对我个人而言):

Dim thestack As Object() = testdatabase.getStack

因此,如果我可以保持变量按原样(Public stack() As Object),然后按照class.stack() = CTest的方式执行某些操作,我应该可以执行Dim thestack As CTest() = testdatabase.getStack因为对象数组将以编程方式执行已从Object更改为CTest

这有可能吗?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是编写一个接受Object并返回CTest的转换函数。函数本身会将Object强制转换为盒装数据类型,将对象上每个属性的值赋给新的CTest对象,然后返回它。像这样:

Function ConvertToCTest(o as Object) as CTest
  dim unboxed as ObjectsDataType
  unbox = directCast(o ObjectsDataType)
  Dim result as CTest
  result.Prop1 = unboxed.Prop1
  result.Prop2 = unboxed.Prop2

  Return result
End Function