En C #, comencé a ver que todos estos métodos mágicos aparecían sin ser respaldados por una interfaz. ¿Por qué eligió esto Anders Hejlsbjerg (o quien esté a cargo del desarrollo de C # en este momento)?
Déjame explicarte.
Anteriormente en C #, si un objeto implementaba la interfaz IEnumerable
, sería iterable automáticamente por un bucle foreach
. Eso tiene sentido para mí, ya que está respaldado por una interfaz, y si tuviera mi propia función Iterator
dentro de la clase que se está repitiendo, podría hacerlo sin preocuparme de que mágicamente significaría otra cosa.
Ahora, aparentemente, (no estoy seguro de cuándo), estas interfaces ya no son necesarias. Solo necesita tener las conversiones de nombres correctas.
Otro ejemplo es hacer que cualquier objeto se pueda esperar al tener un método llamado exactamente GetAwaiter
que tiene algunas propiedades específicas.
¿Por qué no hacer una interfaz como lo hicieron con IEnumerable
o INotifyPropertyChanged
para respaldar esta "magia" de forma estática?
Más detalles sobre lo que quiero decir aquí:
¿Cuáles son los pros y los contras de los métodos mágicos? ¿Hay algún lugar en línea donde pueda encontrar algo sobre por qué se tomaron estas decisiones?