向datarowitems添加一般方法(扩展)

时间:2013-05-22 12:50:37

标签: asp.net vb.net

我正在尝试向所有对象类型添加方法,类似于.toString()。我将它主要用于datrowitems(这些通过sqltype自动进行)。

我想称之为myDatarow("myField").myMethod()。是否可以添加一个方法而不扩展每个可能的对象类型?是否存在所有其他类型继承的通用类型?

3 个答案:

答案 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}}