/// <summary> /// Initializes a new instance of the <see cref="TextTemplateTransformer"/> class. /// </summary> /// <param name="context">The project builder that is building the project.</param> /// <param name="baseDirectory">The base directory of the template source files.</param> /// <param name="additionalReferences">A list of additional library references.</param> /// <exception cref="ArgumentNullException"> /// The specified <paramref name="context"/> is <c>null</c>. /// </exception> /// <exception cref="ArgumentException">The specified <paramref name="baseDirectory"/> is an empty string.</exception> public TextTemplateTransformer(object context, string baseDirectory, IEnumerable<string> additionalReferences) { if (baseDirectory == null) { baseDirectory = Environment.CurrentDirectory; } else if (string.IsNullOrWhiteSpace(baseDirectory)) { throw new ArgumentException(InternalExceptionStrings.ArgumentException_EmptyOrWhitespaceString, "baseDirectory"); } Type contextType; if (context != null) { contextType = context.GetType(); if (contextType.IsSpecialName) { throw new ArgumentException(ArgumentException_TypeIsSpecialName, "context"); } else if (contextType.IsNotPublic) { throw new ArgumentException(ArgumentException_TypeIsNotPublic, "context"); } this.context = context; contextTypeName = contextType.Name; contextNamespace = contextType.Namespace; } if (contextTypeName == null) { contextTypeName = typeof(object).FullName; } this.baseDirectory = baseDirectory; if (additionalReferences != null) { this.additionalReferences = additionalReferences.ToList(); } scriptBuilder = ScriptBuilderFactory.Create(scriptLanguage, Constants.NamespaceName, Constants.ClassName); if (context != null && contextNamespace != null) { scriptBuilder.NamespaceReferences.Add(new NamespaceReference(contextNamespace)); this.additionalReferences.Add(context.GetType().Assembly.Location); } scriptBuilder.AppendPrivatePropertyDeclaration(Constants.ContextPropertyName, contextTypeName); scriptBuilder.AppendLine(); scriptBuilder.AppendPrivatePropertyDeclaration(Constants.OutputPropertyName, typeof(TextTemplateOutputWriter).Name); scriptBuilder.AppendLine(); scriptBuilder.AppendPrivatePropertyDeclaration(Constants.TransformerPropertyName, typeof(IInlineTransformer).Name); scriptBuilder.AppendLine(); scriptBuilder.AppendInitializationMethodScript(contextTypeName); }
/// <summary> /// Initializes a new instance of the <see cref="TextTemplateTransformer"/> class. /// </summary> /// <param name="context">The project builder that is building the project.</param> /// <param name="baseDirectory">The base directory of the template source files.</param> /// <param name="additionalReferences">A list of additional library references.</param> /// <exception cref="ArgumentNullException"> /// The specified <paramref name="context"/> is <c>null</c>. /// </exception> /// <exception cref="ArgumentException">The specified <paramref name="baseDirectory"/> is an empty string.</exception> public TextTemplateTransformer(object context, string baseDirectory, IEnumerable <string> additionalReferences) { if (baseDirectory == null) { baseDirectory = Environment.CurrentDirectory; } else if (string.IsNullOrWhiteSpace(baseDirectory)) { throw new ArgumentException(InternalExceptionStrings.ArgumentException_EmptyOrWhitespaceString, "baseDirectory"); } Type contextType; if (context != null) { contextType = context.GetType(); if (contextType.IsSpecialName) { throw new ArgumentException(ArgumentException_TypeIsSpecialName, "context"); } else if (contextType.IsNotPublic) { throw new ArgumentException(ArgumentException_TypeIsNotPublic, "context"); } this.context = context; contextTypeName = contextType.Name; contextNamespace = contextType.Namespace; } if (contextTypeName == null) { contextTypeName = typeof(object).FullName; } this.baseDirectory = baseDirectory; if (additionalReferences != null) { this.additionalReferences = additionalReferences.ToList(); } scriptBuilder = ScriptBuilderFactory.Create(scriptLanguage, Constants.NamespaceName, Constants.ClassName); if (context != null && contextNamespace != null) { scriptBuilder.NamespaceReferences.Add(new NamespaceReference(contextNamespace)); this.additionalReferences.Add(context.GetType().Assembly.Location); } scriptBuilder.AppendPrivatePropertyDeclaration(Constants.ContextPropertyName, contextTypeName); scriptBuilder.AppendLine(); scriptBuilder.AppendPrivatePropertyDeclaration(Constants.OutputPropertyName, typeof(TextTemplateOutputWriter).Name); scriptBuilder.AppendLine(); scriptBuilder.AppendPrivatePropertyDeclaration(Constants.TransformerPropertyName, typeof(IInlineTransformer).Name); scriptBuilder.AppendLine(); scriptBuilder.AppendInitializationMethodScript(contextTypeName); }