У нас есть базовая база кода .net 4.5 (important) статический класс, который определяет множество константных строковых значений типов объектов (означает значения x.GetType().ToString()
), главным образом для использования в коммутаторе заявления.Генерировать константные строки во время компиляции для корпусов коммутаторов
Это особенно плохо, потому что некоторые рефакторинги нарушают все эти инструкции switch, а места, где это используется, настолько обширны, что мы не можем его изменить. Я знаю другие решения, если бы я написал его сейчас, но:
Есть ли какой-либо способ - без изменений инструкции switch - определять константные строки типов для получения типа времени компиляции, поскольку у меня есть вся информация, которая мне нужна при компиляции время.
Я знаю, что операторы switch скомпилированы во время компиляции в таблицу поиска и не оценивают выражение в случаях, но есть ли способ определить значение const однажды во время компиляции? Единственное, о чем я могу думать, это динамически генерировать код перед сборкой. Есть ли другое решение?
Я должен был добавить, что я застрял на .net 4.5 прямо сейчас и нуждаюсь в решении для этой версии. Но я не вижу ничего другого, кроме генерации кода, что излишне сложно. Я не вижу легкого решения. – Sam
Да, я не могу придумать какое-либо решение для генерации некодов, которое будет работать на C# 5 или ниже (FYI, вы можете использовать C# 6 с .NET 4.5, вам нужно только изменить свой компилятор, построив его на один отправленный с VS2015) EDIT: Если я получаю время, и никто другой не ответил, я мог бы попытаться написать еще один ответ, показывающий, как это сделать с тирацией кода T4. –
Я добавил версию .net, было бы хорошо для вопроса, если у вас есть пример с T4 – Sam