2

大家好,我有以下代码:

    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 中每个元素的等效字符串。不幸的是,我似乎找不到获取自定义对象底层数据的方法,当然就像上面的例子一样,使用 object 只是给了我一串类型定义,而不是访问底层数据。非常感谢任何帮助。

保罗。

4

2 回答 2

2

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

这就是(我假设)为什么.NET 在 ToString 方法中返回类型名称的原因,如果您没有重写该方法以显示更有用的内容。该框架无法知道任何给定类的底层数据的有用表示。

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

于 2010-03-25T13:55:58.833 回答
0

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

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

怎么来的?你试过什么?您应该能够转换为类型或通过反射获得它。也许您可以向我们展示更多代码?

于 2010-03-25T12:39:30.047 回答