Thanks, Sam. Actually, being able to use the same method name will help
with the implementation part of what I'm doing.
And, I'd already tried both CType and DirectCast - still won't convert to
'T'.
I just tried a third way to fix this, and apparently if I specify Object as
the return type, I'm okay. Odd.
"Samuel R. Neff" <> wrote in message
news:...
>
> Might I suggest
>
> Public Function GetDataSet(ByVal command As SqlCommand) As DataSet
>
> and
>
> Public Function GetDataReader(ByVal command As SqlCommand) As
> SqlDataReader
>
>
> If you use a generic method in this situation the user will always
> have to specify the type with the method anyways, so building the type
> into the method name is just as easy to use.
>
> In short, this situation does not sufficiently benefit from using
> Generics.
>
> If you really want to do your #2, you need to add a DirectCast call to
> get around the implicit conversion error.
>
> HTH,
>
> Sam
>
>
> ------------------------------------------------------------
> We're hiring! B-Line Medical is seeking .NET
> Developers for exciting positions in medical product
> development in MD/DC. Work with a variety of technologies
> in a relaxed team environment. See ads on Dice.com.
>
>
> On Mon, 4 Jun 2007 09:17:18 -0700, "Random" <>
> wrote:
>
>>I want to define a generics method so the user can determine what type
>>they
>>expect returned from the method. By examining the generics argument, I
>>would determine the operation that needs to be performed and do just that.
>>However, out of the two possible ways of doing this, neither seems to
>>work.
>>
>>I thought I could either...
>>
>>1) overload the method just based on the generics argument
>>Public Function GetData (Of T As SqlDataReader) (ByRef command as
>>SqlCommand) As T
>> ...
>>End Function
>>
>>Public Function GetData (Of T As DataSet) (ByRef command as SqlCommand) As
>>T
>> ...
>>End Function
>>
>>...or...
>>
>>2) determine the type without overloading and make sure to return the
>>wanted
>>type
>>Public Function GetData (Of T) (ByRef command as SqlCommand) As T
>> Select Case True
>> Case TypeOf(T) Is GetType(SqlDataReader)
>> Return command.ExecuteReader()
>> Case TypeOf(T) Is GetType(DataSet)
>> .....(other code)
>> oDataAdapter.Fill(oDataSet)
>> Return oDataSet
>> End Select
>>End Function
>>
>>But, #1 doesn't work because changing the generics type won't overload the
>>function, and #2 doesn't work because I get errors along the lines of
>>"Value
>>of type '...' cannot be converted to 'T'"
>>
>>I understand #1 not working, but as long as I'm playing it safe with the
>>type conversions, why can't I get #2 to work?
>>
>>
>
|