protected void AppendBaseClass()
        {
            string resource = !IntermediateResult.HasBaseClass ? BaseClassResourceName : ToStringInstanceHelperResource;
            var    provider = new T4TemplateResourceProvider(resource);

            Result.Append(provider.ProcessResource(GeneratedBaseClassName));
        }
        private void AppendAssemblyRegistering()
        {
            var    provider    = new T4TemplateResourceProvider(AssemblyRegisteringResource);
            string references  = GetReferences();
            string registering = provider.ProcessResource(references);

            Result.Append(registering);
        }
        private void AppendHostDefinition()
        {
            var    provider = new T4TemplateResourceProvider(HostResource);
            string filePath = File.GetSourceFile().GetLocation().FullPath;
            string macros   = GenerateExpandableMacros();
            string host     = provider.ProcessResource(filePath, GetGeneratedBaseClassFqn(), macros);

            Result.Append(host);
        }
        private void AppendMainContainer()
        {
            string resource = IntermediateResult.HasHost ? HostspecificSuffixResource : SuffixResource;
            var    provider = new T4TemplateResourceProvider(resource);
            string encoding = IntermediateResult.Encoding ?? T4EncodingsManager.GetEncoding(File);
            string suffix   = provider.ProcessResource(GeneratedClassName, encoding);

            Result.Append(suffix);
            AppendAssemblyRegistering();
            // assembly registration code is part of main class,
            // so resources do not include closing brace
            Result.Append("}");
        }
        protected virtual void AppendBaseClass([NotNull] T4CSharpCodeGenerationIntermediateResult intermediateResult)
        {
            if (intermediateResult.HasBaseClass)
            {
                return;
            }
            Result.AppendLine(BaseClassDescription);
            AppendIndent();
            Result.Append(intermediateResult.AccessRightsText);
            Result.Append(" class ");
            Result.AppendLine(ClassNameProvider.GeneratedBaseClassName);
            string resource = BaseClassResourceName;
            var    provider = new T4TemplateResourceProvider(resource);

            Result.Append(provider.Template);
        }