Отражение времени компиляции в C #

Я часто пишу код C #, который должен использовать магические строки для выражения имен свойств. Всем известны проблемы с волшебными струнами. Их очень сложно реорганизовать, они не проверяются во время компиляции и часто приводят к трудно диагностируемым проблемам. Тем не менее, C # /. NET использует их повсюду для представления имен свойств / классов / методов.

Эта проблема сохраняется в течение многих лет, и единственное жизнеспособное решение в настоящее время - использовать дерево выражений, которое затем анализируется во время выполнения на предмет имени свойства. Это дает вам удовлетворительную проверку во время компиляции, но усложняет код (требуя параметров типа Expression), и это требует затрат времени выполнения.

Кто-нибудь знает, рассматривалось ли когда-либо возможность для C # /. NET добавить отражение времени компиляции, чтобы преодолеть эту распространенную проблему?

Похоже, это было бы несложное добавление, это было бы существенное изменение, и это принесло бы огромную пользу многим разработчикам. Оператор typeof () уже выполняет форму отражения во время компиляции, поэтому кажется, что оператор nameof () (или что-то подобное) будет очень полезным.

Кроме того, знает ли кто-нибудь о потенциальных проблемах с такой функцией?

Спасибо за помощь.

22
задан MgSam 17 February 2012 в 20:43
поделиться