从自定义列表转换​​为字符串列表

时间:2010-03-25 12:34:49

标签: vb.net string ilist

大家好我有以下代码:

    Public Shared Function ConvertToString(ByVal list As IList) As String
        Dim strBuilder = New System.Text.StringBuilder()
        Dim item As Object
        For Each item In list
            strBuilder.Append(obj.ToString())
            strBuilder.Append(",")
        Next
        Return strBuilder.ToString(strBuilder.Length - 1)
    End Function

目的是将IList的自定义对象转换为包含Ilist中每个元素的字符串。不幸的是,我似乎无法找到获取自定义对象的基础数据的方法,当然,如上例所示,使用对象只是给我一个类型定义的字符串,而不是访问底层数据。任何帮助都非常赞赏。

保罗。

2 个答案:

答案 0 :(得分:2)

对象中没有“基础数据”的默认字符串表示形式。这一切都取决于你想看到什么。比如说,你有一个Person类,它有FirstName和LastName属性。你有一个FirstName =“John”和LastName =“Smith”的实例。底层数据的默认表示是什么? “约翰·史密斯”? “史密斯,约翰”?还有别的吗?

那是(我假设)如果你没有覆盖那个方法来显示更有用的东西,那么.NET会在ToString方法中返回类型名称。框架无法知道任何给定类的基础数据的有用表示。

所以我认为你不能让你的方法适用于任意类。如果你想要一个特定的小类,你可以覆盖ToString,因为Paul Sasik建议为它们提供一个有用的字符串表示。或者,如果您无法访问这些类的代码,则可以为所有类添加扩展方法,GetUnderlyingData或类似的东西,并调用该扩展方法而不是ToString。

答案 1 :(得分:0)

如果您可以控制自定义对象,则可以覆盖ToString函数以返回您想要查看的字符串数据类型。

I can't seem to find a way to get the underlying data of the custom object,

为什么?你有什么尝试?你应该能够转换为类型或通过反射得到它。也许你可以向我们展示一些代码?