> Hum, I've never seen generics making code harder to reason about in any language, except, of course for C++, where they are hacked over text.
do you mean templates?
i was under the impression that c++ generics == templates, but after a google search found out that c++ has both (at least according to microsoft), not surprised
My experience was that P/Invoke is much easier, but of course YMMV. COM I never played around with.
I also found a pretty ugly bug in the C++/CLR compiler - if you used in-place initialization for an array (something like auto arr = Object[]{obj1}), it would allocate an array of length 0xC0FFEE and set the elements you specified. They acknowledged the bug but said they will only fix it in a future version of the language.
This told me all I needed to know about how popular it actually was.