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