Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从自定义列表转换为字符串列表_Vb.net_String_Ilist - Fatal编程技术网

Vb.net 从自定义列表转换为字符串列表

Vb.net 从自定义列表转换为字符串列表,vb.net,string,ilist,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())

大家好,我有以下代码:

    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
其目的是将自定义对象的ILST转换为包含ILST中每个元素的等效字符串。不幸的是,我似乎找不到一种方法来获取自定义对象的底层数据,当然,正如上面的示例中所示,使用object只会给我一个类型定义字符串,而不是访问底层数据。非常感谢您的帮助


Paul.

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

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

为什么?你试过什么?您应该能够强制转换到类型或通过反射获得它。也许您可以再给我们看一点代码?

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

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


所以我不认为你能让你的方法适用于任意的类。如果您有一个特定的小类集,您想让它工作,那么可以按照Paul Sasik的建议重写ToString,为它们提供有用的字符串表示。或者,如果您没有访问这些类的代码的权限,您可以为所有这些类添加一个扩展方法,GetUnderlyingData或类似的方法,并调用该扩展方法,而不是ToString。

谢谢大家,覆盖成功了。想不出为什么我从一开始就没有想到这一点,显然没有足够的咖啡因哈哈。