Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Доступ к сессии?

26.03.22 15:41
Доступ к сессии?
 
Murr патриот
Murr

Доступ к сессии?


Есть ХОСТ для процесса компиляции. Получается имплементацией интерфеса:


    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;
        }
    


Вопрос на засыпку - как из просессора директивы получить доступ к этой сессии?

П.С. Та Сессия, которая доступна при генерации кода это другая сессия. Меня интересует сессия времени компиляции.

 

Перейти на