Scrivo spesso codice C# che deve utilizzare stringhe magiche per esprimere i nomi di proprietà. Tutti conoscono i problemi con le stringhe magiche. Sono molto difficili da refactoring, non hanno il controllo del tempo di compilazione e spesso portano a problemi difficili da diagnosticare. Tuttavia C# /. NET li usa dappertutto sul posto per rappresentare i nomi di proprietà/classe/metodo.Riflessione del tempo di compilazione in C#
Questo problema persiste da anni e anni e l'unica soluzione valida al momento consiste nell'utilizzare un albero di espressioni che viene quindi analizzato in fase di esecuzione per il nome della proprietà. Ciò consente di ottenere un controllo soddisfacente in fase di compilazione, ma complica il codice (richiedendo parametri di tipo Expression), e comporta un costo di runtime.
Qualcuno sa se è mai esistita una considerazione per C# /. NET per aggiungere una riflessione in fase di compilazione per superare questo problema pervasivo?
Sembra che sarebbe un'aggiunta facile da fare, sarebbe un cambiamento senza interruzione e sarebbe di grande beneficio per molti sviluppatori. L'operatore typeof() esegue già una forma di riflessione in fase di compilazione, quindi sembra che un operatore nameof() (o qualcosa di simile) sia molto gratuito.
Inoltre, qualcuno sa di potenziali problemi con tale funzione?
Grazie per l'aiuto.
possibile duplicato di [Utilizzo di un'espressione lambda per evitare l'utilizzo di una "stringa magica" per specificare una proprietà] (http://stackoverflow.com/questions/3330758/using-a-lambda-expression-to-avoid-using -a-magic-string-to-specific-a-property) –
Vedi anche: [Ottieni la proprietà, come stringa, da un'espressione>] (http://stackoverflow.com/questions/2789504/get-the-property-as-a-string-from-an-expressionfunctmodel-tproperty) –
@KirkWoll Questo non è un duplicato di quella domanda. Il secondo paragrafo della domanda indica che MgSam ha familiarità con la tecnica dell'albero dell'espressione; la domanda è se ci potrebbe essere una nuova funzionalità nei lavori che consentirebbe una nuova soluzione al problema. – phoog