2010-03-25 20 views
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每個元素。不幸的是,我似乎無法找到獲取自定義對象的底層數據的方法,當然,就像在上面的例子中一樣,使用對象只是給了我一串類型定義,而不是訪問底層數據。任何幫助非常感謝。

Paul。

回答

0

如果您可以控制自定義對象,則可以重寫ToString函數以返回要查看的字符串數據的類型。

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

怎麼回事?你有什麼嘗試?您應該能夠投射到該類型或通過反射來獲取它。也許你可以向我們展示更多的代碼?

2

對象中沒有默認的「底層數據」字符串表示形式。這一切都取決於你想看到什麼。比如說,你有一個Person類,它有屬性FirstName和LastName。你有一個FirstName =「John」和LastName =「Smith」的實例。底層數據的默認表示是什麼? 「約翰·史密斯」? 「史密斯,約翰」?還有別的嗎?

這就是(我假設)爲什麼.NET在ToString方法中返回類型名稱,如果你沒有重寫該方法來顯示更有用的東西。框架無法知道什麼是任何給定類的基礎數據的有用表示。

所以我不認爲你可以讓你的方法適用於任意類。如果你有一個特定的一小組類,你希望這個工作,你可以重寫ToString,因爲Paul Sasik建議爲它們提供一個有用的字符串表示。或者,如果你沒有訪問這些類的代碼,你可以爲它們添加一個擴展方法,GetUnderlyingData或類似的東西,並調用該擴展方法而不是ToString。

+0

感謝球員,覆蓋工作。想不到爲什麼我從一開始就沒有想到這一點,顯然咖啡因LOL還不夠。 – 2010-03-25 14:10:44