On 平成 21/07/01, at 13:55, Trouve Antoine wrote: > On å¹³æ 21/07/01, at 13:26, Michael Hutchinson wrote: > >> On Tue, Jun 30, 2009 at 10:30 PM, Yopmaster<trouve.anto...@mac.com> >> wrote: >>> I think your issue is due to another huge difference between Mono >>> and .NET >>> which leads to this kind of error. Here is an example: >>> >>> Let us consider "Human" and "Child" so that "Child" is derived >>> from "Human": >>> >>> class Child : Human {} >>> >>> If now you create the List of type >>> >>> List<Child> children; >>> >>> In .NET, "children" will also implement the type "List<Human>": >>> >>> children is List<Child> >>> >>> true >>> children is List<Human> >>> >>> true >> >> This is incorrect. List<Subclass> cannot be cast to >> List<Superclass> on .NET. >> >> Some examples like this can be solved by generic >> covariance/contravariance in .NET 4.0. See >> http://themonkeysgrinder.blogspot.com/2009/02/c-4-is-now.html for >> some >> explanations. However, since System.Generic.Collections.List<T> both >> accepts and returns objects of type T, I don't believe it could be >> made variant. >> >> -- >> Michael Hutchinson >> http://mjhutchinson.com > > Ho, you're right. I think this behaviour has changed since .NET 2.0. > I've just checked and one of my old project do not compile anymore. > ... or I might have missed something. I have missed something and written too fast: this projects works in the case I use my old interfaces (e.g. IList instead of List) It the point explained in your link as "variance" right ? By the way I remember it was not supported by Mono 1.3 or something. I tested and it works with gmcs 2.4 (and 1.9 since I've just tested).
> Thank you for your link about covariance/contravariance, seems > interesting... _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list