Delegate casting problem

  • Thread starter Thread starter PJ6
  • Start date Start date
P

PJ6

I have a generalized delegate,

Public Delegate Function DataRetreivingDelegate() as Object

with an associated property in a certain class. Almost never will I actually
be wanting to set the property of this delegate type to a method that
returns an Object - rather I want to point it to methods that will be
returning strings, integers, decimals, whatever.

So I tried this -

Public Shared Function GetSomething() as String

End Function

DirectCast(AddressOf GetSomething, DataRetreivingDelegate)

Only this doesn't work. Why doesn't the Framework allow method signature
return types to be up-casted?

Anyway, what's the best way around this without having to physically code
additional methods that return Objects? I know I can just use a raw
MethodInfo, but I don't want to complicate this any more than I have to
since performance will be a consideration.

TIA,
Paul
 
Hi,

If you are using vb 2005 try this.

Public Delegate Function DataRetreivingDelegate(Of T)() As T

Public Function GetSomething() As String
Return "test"
End Function


Dim d As New DataRetreivingDelegate(Of String)(AddressOf
GetSomething)
Label1.Text = d.Invoke()


Ken
 
Back
Top