[Mono-dev] Compiler bug with Generics and where constraints

John Anderson sontek at gmail.com
Mon Jul 16 20:13:35 EDT 2007


On 7/16/07, Adar Wesley <adar.wesley at gmail.com> wrote:
>
> Hi John,
>
> It seams to me there is a problem with the code.  (I don't know if it
> worked before)
> In
>
>    1. protected static T
>    GetBusinessQueryObjectFromReader<T>(IDataReader reader)
>    2. 74             where T : BusinessQueryObject, new()
>
> The generic parameter T is contained.  However in:
> public override T[] GetQueryObjects<T>(string query, params
> QueryParameter[] parameters)
> T is not constrained.
>
> When you try to call GetBusinessQueryObjectFromReader<T>(IDataReader
> reader)
> from within GetQueryObjects<T> with the same generic parameter you get the
> error.
>
> Either add the same constraint on T in the decleration of
> GetQueryObjects<T> or remove
> the constraint from GetBusinessQueryObjectFromReader<T>.
>

The constraint is inherited and you can't add a constraint to a method that
you are overriding (because you inherited it)

but I found the actual cause of the problem, Its when passing the generic
type through an anonymous delegate.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20070716/9762fe8f/attachment.html 


More information about the Mono-devel-list mailing list