通过Object类型访问公共对象

时间:2013-06-28 10:22:07

标签: vb.net visual-studio-2010

目标和问题

为了将用户条目导出到XML文件,我构建了一个包含所需所有对象列表的表。有TextboxesCheckboxes等,还有“内部”对象,例如DoubleBoolean

对于Visual Studio工具箱中存在的对象(即TextboxesCheckboxes),一切都很顺利,但对于“内部”对象则没有。

我是这样做的。

1。制作对象列表

tableSave是我的列表所在的DataTable。每行对应一个要保存的对象。它们按以下方式添加:

AddSaveObject("Category", "Subcategory", "Name", ObjectToSave)

Private Sub AddSaveObject(Category As String, Subcategory As String, _
                          Name As String, ObjectToSave As Object)
    Dim newRow As DataRow = tableSave.NewRow()
    Dim columnValuesArray() As Object = New Object() {Category, Subcategory, Name, ObjectToSave}
    newRow.ItemArray = columnValuesArray
    tableSave.Rows.Add(newRow)
End Sub

2。写入XML

然后我在XML文件中写下所有内容。根据{{​​1}}类型,采取了不同的行动:

ObjectToSave

问题

对于Select Case ObjectToSave.GetType Case GetType(CheckBox) ValueToWrite = ObjectToSave.Checked.ToString Case GetType(Boolean) ValueToWrite = ObjectToSave.ToString Case GetType(Double) ValueToWrite = ObjectToSave.ToString Case GetType(...) ... Case Else 'for Textboxes etc. ValueToWrite = ObjectToSave.text End Select BooleanDouble或其他自定义类,String始终为空,返回ObjectToSave或{ {1}}。

知道为什么吗?

谢谢!

答案

由于 varocarbas 的答案,我已经能够解决我的问题了。这是诀窍:

我使用0进入表格。对于每一行,我都在定义

""

删除As对象可以为所谓的ObjectToSave分配正确的类型。

For

但我仍然不明白,为什么它不起作用,与“内部”对象。

1 个答案:

答案 0 :(得分:1)

这里有一个代码可以提供您所追求的内容:

Dim ObjectToSave = GetType(Double) 'GetType(CheckBox) 
Select Case ObjectToSave
    Case GetType(CheckBox)
        ValueToWrite = ObjectToSave.Checked.ToString
    Case GetType(Boolean)
        ValueToWrite = ObjectToSave.ToString
    Case GetType(Double)
        ValueToWrite = ObjectToSave.ToString
    Case GetType(...)
        ...
    Case Else 'for Textboxes etc.
        ValueToWrite = ObjectToSave.text
End Select