我正在尝试向所有对象类型添加方法,类似于.toString()
。我将它主要用于datrowitems(这些通过sqltype自动进行)。
我想称之为myDatarow("myField").myMethod()
。是否可以添加一个方法而不扩展每个可能的对象类型?是否存在所有其他类型继承的通用类型?
答案 0 :(得分:0)
所有类都继承自Object
类。因此,您可以尝试向Object
类添加扩展方法。
但请三思而后行决定你真的想要这样做。为什么需要为每个可能的类型添加扩展方法?
答案 1 :(得分:0)
尝试使用扩展方法。扩展方法类似于普通方法,但在另一个类中定义。
在你的情况下,它看起来像这样:
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
}
}
答案 2 :(得分:0)
我不想将此方法添加到datarowobject本身,因为mydatarow(“Field”)可以是任何类型,并且不会继承数据行。
实现所需要的一个选项是像普通一样扩展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")
这样的预期通话:
{{1}}