In C#, I started seeing all these magic methods popping up, without being backed up by an interface. Why did Anders Hejlsbjerg (or whoever is in charge for C# development right now) choose this?
Let me explain.
Previously in C#, if an object implemented the
IEnumerable interface, it would automatically be iterable by a
foreach loop. That makes sense to me, since it's backed up by an interface, and if I were to have my own
Iterator function inside the class being iterated through, I could do that without worrying that it would magically mean something else.
Now, apparently, (not sure when), these interfaces are no longer required. It just needs to have the right naming conversions.
Another example is making any object awaitable by having a method named exactly
GetAwaiter which has a few specific properties.
Why not make an interface like they did with
INotifyPropertyChanged to back this "magic" up statically?
More details on what I mean here:
What are the pros and cons of magic methods, and is there anywhere online where I can find anything on why these decisions were made?