如何在不使用VB.net中的委托的情况下将Function作为参数传递?

时间:2013-11-14 19:39:47

标签: vb.net

我正在编写一个代码来写入我事先不知道的数据库表。插入新行时,某些数据需要具有“动态”默认值。我正在写一个函数来做到这一点。

该代码旨在非常通用。所以我创建了一个名为DefaultValueType

的对象
Public Class DefaultValueType
    Public FieldName As String
    Public DefaultValue As [Delegate]
    Public Sub New(ByVal _FieldName As String, ByVal _DefaultValue As [Delegate])
        Me.FieldName = _FieldName
        Me.DefaultValue = _DefaultValue
    End Sub
End Class

我用这样的函数创建新行:

Public Sub CreateNewRows(ByVal DefaultValues As List(Of DefaultValue))
    'Do some staff
    '...

    For i = 0 To DefaultValues.Count - 1
        '... do some staff

        'Default value of the row
        NewRow.Item(DefaultValues(i).FieldName) = DefaultValues(i).DefaultValue.DynamicInvoke()
    Next
End Sub

我的问题是,当我创建新的DefaultValues时,我使用

Dim X as new DefaultValue("ID",AddressOf(SomeFunction))

我收到错误:'AddressOf'表达式无法转换为'System.Delegate',因为类型'System.Delegate'被声明为'MustInherit'而无法创建。

我可以通过创建委托来解决此问题。但是代码的目的是填充任何类型的默认值,所以我必须创建许多delagates并编写很长的“Select Case”行

Public Delegate Function LongOutputFunction() As Long
Public Delegate Function StringOutputFunction() As String
Public Delegate Function BooleanOutputFunction() As Boolean

有没有人知道如何在不使用委托的情况下将函数作为参数传递?

感谢。

0 个答案:

没有答案