Вход на сайт
Доступ к сессии?
893 просмотров
Перейти к просмотру всей ветки
Доступ к сессии?
Есть ХОСТ для процесса компиляции. Получается имплементацией интерфеса:
public interface ITextTemplatingEngineHost { IList<string> StandardAssemblyReferences { get; } IList<string> StandardImports { get; } string TemplateFile { get; } object GetHostOption(string optionName); bool LoadIncludeText(string requestFileName, out string content, out string location); void LogErrors(CompilerErrorCollection errors); AppDomain ProvideTemplatingAppDomain(string content); string ResolveAssemblyReference(string assemblyReference); Type ResolveDirectiveProcessor(string processorName); string ResolveParameterValue(string directiveId, string processorName, string parameterName); string ResolvePath(string path); void SetFileExtension(string extension); void SetOutputEncoding(Encoding encoding, bool fromOutputDirective); }
Есть способ передать информацию об ХОСТе в обработчик директив шаблона.
public override void Initialize(ITextTemplatingEngineHost host) { //we do not need to do any initialization work }
Однако в процессе обработки встроенных директив результаты складываются не на ХОСТ, а в СЕССИЮ.
private static void ProcessTemplateDirective(Directive directive, TemplateProcessingSession session, TErrorsLog errors, ITelemetryScope scope) { session.Language = GetLanguage(); session.HostSpecific = GetHostSpecific(); session.BaseClassName = GetBaseClassName(); session.Debug = GetDebug(); session.FormatProvider = GetFormatProvider(); session.CompilerOptions = GetCompilerOptions(); session.IsPublic = GetVisibility(); session.LinePragmas = GetLinePragmas(); return; }
Вопрос на засыпку - как из просессора директивы получить доступ к этой сессии?
П.С. Та Сессия, которая доступна при генерации кода это другая сессия. Меня интересует сессия времени компиляции.