Con .NET 4.5, il team CLR aggiunto:Perché non c'è CallerTypeNameAttribute in .NET 4.5?
Perché non era uno aggiunto per il tipo del chiamante?
Con .NET 4.5, il team CLR aggiunto:Perché non c'è CallerTypeNameAttribute in .NET 4.5?
Perché non era uno aggiunto per il tipo del chiamante?
Questo è difficile per qualcuno al di fuori del team di progettazione per rispondere, ma direi che non esiste un caso di utilizzo valido per CallerTypeNameAttribute
.
Gli attributi file e linea forniscono informazioni estese per le routine di registrazione che altrimenti sarebbe impossibile ottenere. Il nome utente consente la registrazione e semplifica l'implementazione di INotifyPropertyChanged
consentendo al tempo stesso di rielaborare il nome in modo sicuro senza la necessità di cercare stringhe.
Il tipo di chiamante può essere già passato a un determinato metodo utilizzando typeof(CurrentType).Name
, quindi probabilmente non merita un attributo extra. Si potrebbe dire che il nome del chiamante potrebbe anche essere già ottenuto usando MethodBase.GetCurrentMethod
ma che probabilmente impone sempre la riflessione e lo typeof
probabilmente è ottimizzato in modo da ottenere già il vantaggio di un refactoring sicuro e un impatto minore sulle prestazioni.
L'unico svantaggio di utilizzare typeof
anziché l'attributo possibile sarebbe che l'approccio dell'attributo non sarebbe influenzato dall'offuscamento.
Il nome membro contiene il nome del tipo come prefisso? – CodesInChaos
@CodesInChaos non sembra. –
La risposta standard per "Perché X non ha Y?" è "Perché dovrebbe avere X avere Y?" Sono stati considerati casi di utilizzo reale per i tre attributi elencati. Sono curioso, qual è il tuo caso d'uso per il tipo di chiamante? – hvd