Home All Groups Group Topic Archive Search About

Delegate casting problem

Author
11 Jun 2006 4:18 PM
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

Author
11 Jun 2006 10:21 PM
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
---------------------
Show quoteHide quote
"PJ6" <no***@nowhere.net> wrote in message
news:%23ysekKXjGHA.3780@TK2MSFTNGP03.phx.gbl...
>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
>