Предыстория:
У меня есть игровая библиотека с открытым исходным кодом, написанная на C #, которая хорошо настроена по производительности, с использованием небезопасного кода, арифметики указателей и т. Д. Недавно я перенес библиотеку на Windows Phone. К сожалению, Windows Phone вообще не поддерживает небезопасный код, поэтому мне пришлось засорять свой исходный код директивами препроцессора, такими как:
#if WINDOWS || XBOX
public unsafe struct Foo
#elif WINDOWS_PHONE
public struct Foo
#endif
Из-за количества этих директив кодовая база стала нечитаемой и сложной в обслуживании, поэтому я Я изучаю другие варианты - один из них - текстовые шаблоны с использованием T4.
Вопрос:
Что мне нужно знать, прежде чем заходить слишком далеко по маршруту T4, можно ли получить символы компиляции из в текстовом шаблоне? Я изучил параметры шаблона, но изменить их из внешнего мира оказалось непросто. В идеале я бы хотел увидеть что-то вроде этого:
<# if (Host.CompilationSymbols.Contains("WINDOWS_PHONE") { #>
public struct Foo
<# { #>
Если бы кто-нибудь мог пролить свет на то, возможно это или нет, я был бы благодарен!