Пример #1
0
        private void Compile(object context)
        {
            var className            = Utility.MakeClassName(ListExtensions.Last(_layoutViewSources).Path);
            var compiler             = options.TemplateCompiler;
            var templateClassBuilder = compiler.CreateTemplateClassBuilder(className);

            var templateParser = new TemplateParser(options, templateClassBuilder, _layoutViewSources);

            var viewSourceReader = templateParser.Parse();

            viewSourceModifiedChecks = viewSourceReader.ViewSourceModifiedChecks;

            if (_templateBaseType.IsGenericTypeDefinition)
            {
                var modelType = GetModelType(templateClassBuilder.Meta);
                templateClassBuilder.BaseType = _templateBaseType.MakeGenericType(modelType);
                options.AddReference(modelType.Assembly);
            }
            else
            {
                templateClassBuilder.BaseType = _templateBaseType;
            }
            templateParser.Options.AddReferences(_templateBaseType);
            if (options.BeforeCompile != null)
            {
                options.BeforeCompile(templateClassBuilder, context);
            }

            _templateFactory = compiler.Compile(viewSourceReader, templateParser.Options, templateClassBuilder);
        }