我正在嘗試向所有對象類型添加一個方法,類似於.toString()
。我將主要用於datrowitems(並且這些通過sqltype獲取autocasted)。我想稱之爲myDatarow("myField").myMethod()
。一般情況下是否可以添加一個方法而不擴展每個可能的對象類型?是否有一種其他類型繼承的一般類型?將一般方法添加到數據項技術(擴展)
回答
我不希望這種方法添加到datarowobject本身,因爲mydatarow(「田」)可以是任何類型的,並沒有按不繼承datarow。
實現你所需要的一個選項是像普通的那樣擴展DataRow,但傳遞列名作爲參數。例如,(在VB雖然):
<Extension> Sub myMethod(dr As DataRow, columnName As String)
If dr.Item(columnName) Is DBNull.Value Then
' your code
ElseIf TypeOf dr.Item(columnName) Is String Then
' your code
Else
'
End If
End Sub
因此,與其像myDatarow("myField").myMethod()
您打算調用,您可以調用它像這樣:
myDatarow.myMethod("myField")
似乎是更好的方式。謝謝! – Devcon
所有的類都繼承自Object
類。所以你可以嘗試添加一個擴展方法到Object
類。
但請三思而後決定你是否真的想這樣做。爲什麼你需要爲每種可能的類型添加一個擴展方法?
我已經嘗試過,但它不起作用。擴展對象不適用於類型(對象的方法不會是整型的方法)。我試圖很容易處理dbnullexceptions(例如toString),但對於其他類型,如整數(通過添加.toInteger()方法)。 – Devcon
嘗試使用擴展方法。擴展方法與普通方法類似,但在另一個類中定義。
在你的情況下,它會是這個樣子:
public static class MyMethods
{
public static MyResult MyMethod(this DataRow row)
{
//code goes here, you can access only the public members of the row class
}
}
- 1. 將擴展方法添加到MembershipProvider
- 2. Snagit Chrome擴展技術
- 3. 將新數據添加到數據庫的最具可擴展性的方法?
- 4. 將擴展添加到PHP.ini?
- 5. 無法將擴展方法添加到LINQ
- 6. .mpl擴展名爲URL:Perl相關技術?
- 7. Vim:技術方法
- 8. 無法將yii擴展添加到我的項目中?
- 9. 一般Linq數據方法
- 10. 是否將擴展方法添加到ViewModel維護ViewModel規則?
- 11. 不能將TryParseNull擴展方法添加到int在C#
- 12. 將擴展方法添加到ASP.net轉發器的NamingContainer
- 13. C#將擴展方法添加到類的實例?
- 14. 將擴展方法添加到字符串類 - C#
- 15. 將通用擴展方法添加到接口,如IEnumerable
- 16. 數據加載到qlikview擴展將this.Data
- 17. c#擴展方法 - 添加一個無效方法
- 18. 添加擴展方法列出
- 19. 如何添加擴展方法?
- 20. 擴展活動添加回調方法
- 21. Ruby擴展Date類添加新方法
- 22. 擴展模型以添加方法
- 23. Scala添加方法擴展東西
- 24. 擴展HashMap以添加putChildren方法
- 25. 將視覺工作室加載項添加到擴展庫
- 26. 動態地將數據添加到擴展類AbstractTableModel
- 27. 使用pykml將擴展數據添加到python中的地標
- 28. 組添加到項目中的技術管理平臺
- 29. 將PHP的擴展添加到ctags
- 30. 如何將擴展添加到泛型?
我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
在預感中,我不知道你想做什麼。 –
@約翰哦,好的。我將來會避免這種情況。 @ G. Stoynev它有什麼問題? – Devcon