Delegate casting problem

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
 
K

Ken Tucker [MVP]

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top