2012-08-29 18 views
10

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?

+0

Il nome membro contiene il nome del tipo come prefisso? – CodesInChaos

+0

@CodesInChaos non sembra. –

+0

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

risposta

1

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.

Problemi correlati