In C #, ho iniziato a vedere tutti questi metodi magici spuntare, senza essere supportati da un'interfaccia. Perché Anders Hejlsbjerg (o chi è attualmente responsabile dello sviluppo di C #) sceglie questo?
Lasciami spiegare.
Precedentemente in C #, se un oggetto implementava l'interfaccia IEnumerable
, sarebbe automaticamente iterabile da un ciclo foreach
. Questo ha senso per me, dal momento che è supportato da un'interfaccia, e se dovessi avere la mia funzione Iterator
all'interno della classe che viene ripetuta, potrei farlo senza preoccuparmi che significhi magicamente qualcos'altro.
Ora, a quanto pare, (non è sicuro quando), queste interfacce non sono più necessarie. Ha solo bisogno delle giuste conversioni di denominazione.
Un altro esempio è rendere qualsiasi oggetto attendibile con un metodo denominato esattamente GetAwaiter
che ha alcune proprietà specifiche.
Perché non creare un'interfaccia come hanno fatto con IEnumerable
o INotifyPropertyChanged
per eseguire il backup di questa "magia" su staticamente?
Maggiori dettagli su cosa intendo qui:
Quali sono i pro e i contro dei metodi magici, e c'è un posto online dove posso trovare qualcosa sul perché sono state prese queste decisioni?