This was the primary lesson for me when we build .NET Core v2.
We've spent years coming up with the "cleaner & better layered" API surface that initially shipped in Windows 8 and then became .NET Core v1. We largely undid this to be able to consume existing .NET FX binaries. https://twitter.com/richcampbell/status/1304434999014428672
We've spent years coming up with the "cleaner & better layered" API surface that initially shipped in Windows 8 and then became .NET Core v1. We largely undid this to be able to consume existing .NET FX binaries. https://twitter.com/richcampbell/status/1304434999014428672
One of the most painful things we had to undo was decoupling reflection from the core. I say painful because we spent years to make it work and we were quite content with ourselves because we did some clever stuff.
However, GetTypeInfo() was also a massive pain in the ass and easily the top contender for most annoying break between .NET Framework & .NET Core.
It's never great when you're forced to throw away years of work and design. But it's worse when you have to admit to yourself that your clever design just isn't good enough.
Yes, we spent a few man years on it. But the number is easily dwarfed when you consider the hundreds or thousands of man years our ecosystem would need to invest to accommodate that split moving forward.