这样的事情可能吗 - 如果是这样的话怎么办?
Public Sub CreateGenericList(ByVal SampleObject As Object)
Dim genericList as new List(Of SampleObject.GetType())
End Function
我想创建一个能够反序列化给定 XML 文件的类。XML 文件包含自定义类型的序列化值,这在编译时是未知的。我认为可以只使用参数 SampleObject 初始化类,然后获取 SampleObject 的类型以进行所有进一步的处理。但似乎所有操作的类型都必须在编译时知道?有没有办法解决它或者你能向我解释这个问题吗?
上面的代码示例只是为了说明我的问题
感谢您的帮助,贾尼斯
编辑:您的答案可能已经解决了问题,我将阅读更多关于“反思”和“泛型”主题的内容,如果我取得任何进展,我会及时通知您。所以感谢分配的帮助。
对于那些仍然感兴趣的人:我被问到我的问题的目的,并将尽我所能解释它。
Public Function ReadAllObjects() As List(Of myObjectType)
Dim result As New List(Of myObjectType)
Dim ObjectSerializer As New System.Xml.Serialization.XmlSerializer(result.GetType)
Dim FileReader As New System.IO.FileStream(My.Settings.XMLPath, System.IO.FileMode.Open)
result = TryCast(ObjectSerializer.Deserialize(FileReader), List(Of myObjectType))
FileReader.Close()
RaiseEvent ReadingFinished()
Return result
End Function
这几乎总结了我想要创建的内容:一个 EasyXmlHandling.dll 供进一步使用,它将使用当前使用的变量类型进行初始化。然后它应该能够以非常简单的方式写入和读取 XML 文件,只需调用“ReadAllObjects”(返回 myObjectType 的列表)或“AddObject(ByVal theNewObject)”......(更多职能)
我得到了所有这些都可以使用自定义类作为类型,所以我现在可以轻松地重用 EasyXmlHandling 代码,只需将源代码中的类型替换为我想要使用的任何新类。虽然我更愿意只用一个示例对象(或它的类型)调用 .dll 并让它自动执行其他所有操作。
我希望这是可以理解的,但我的英语和技术词汇都不是很好;)
因此,再次感谢您的帮助和阅读本文。我将尝试让它与您之前的所有答案一起使用,并在我取得进一步进展时更新主题。