public MsBuildWriterSetup(string target, string path, TypeOrObject <IWriter> writer, bool addFilesToProject) { this.Target = target; this.Path = path; this.Writer = writer; this.AddFilesToProject = addFilesToProject; }
/// <summary> /// Initializes a new instance of the <see cref="CodeGeneratorSetup" /> class. /// </summary> /// <param name="generator">The generator.</param> /// <param name="writerSetups">The writer setups.</param> /// <param name="skipGlobalWriterSetup">if set to <c>true</c> [skip global writer setup].</param> /// <param name="shareGlobalWriters">if set to <c>true</c> [share global writers].</param> /// <param name="targetNamespace">The target namespace.</param> /// <param name="usings">The usings.</param> /// <param name="useGlobalUsings">if set to <c>true</c> [use global usings].</param> public CodeGeneratorSetup(TypeOrObject <IGenerator> generator, IReadOnlyList <IFileWriterSetup> writerSetups, bool skipGlobalWriterSetup, bool shareGlobalWriters, string targetNamespace, IReadOnlyList <string> usings, bool useGlobalUsings) : base(generator, writerSetups, skipGlobalWriterSetup, shareGlobalWriters) { this.TargetNamespace = targetNamespace; this.Usings = usings; this.UseGlobalUsings = useGlobalUsings; }
public static IWriter <IWriterSetup, ITarget, IRun, object> CreateWriter( TypeOrObject <IWriter>?writerTypeOrObject, SetupInfo setupInfo, int writerSetupIndex, int?generatorSetupIndex, IWriter?previousWriter) { if (writerTypeOrObject == null) { if (previousWriter is IHaveWriter haveWriter) { previousWriter = haveWriter.Writer; } if (previousWriter != null) { writerTypeOrObject = new TypeOrObject <IWriter>((IWriter)Activator.CreateInstance(previousWriter.GetType())); } else { throw new InitializationException( $"Could not create writer, because {GetPropertyPath(writerSetupIndex, generatorSetupIndex)} was not defined and no previous writer was found.", setupInfo.Origin, GetPropertyPath(writerSetupIndex, generatorSetupIndex)); } } var interfaceType = writerTypeOrObject.Type.GetGenericInterface(typeof(IWriter <, , ,>)); if (interfaceType == null) { throw new InitializationException( $"Could not create writer, because {writerTypeOrObject.Type.Name} does not implement {typeof(IWriter<,,,>)}, please check the setup.", setupInfo.Origin, GetPropertyPath(writerSetupIndex, generatorSetupIndex)); } var writer = writerTypeOrObject.Object ?? (IWriter)Activator.CreateInstance(writerTypeOrObject.Type); if (interfaceType.GenericTypeArguments[0] != typeof(IWriterSetup) || interfaceType.GenericTypeArguments[1] != typeof(ITarget)) { writer = (IWriter)Activator.CreateInstance(typeof(WriterAdapter <, , ,>).MakeGenericType(interfaceType.GenericTypeArguments), writer); } return((IWriter <IWriterSetup, ITarget, IRun, object>)writer); }
public static IGenerator <ISetup, IGeneratorSetup, ITarget, object, IRun, object> CreateGenerator(TypeOrObject <IGenerator>?generatorObjectOrType, SetupInfo setupInfo, int generatorSetupIndex, IGenerator?previousGenerator) { if (generatorObjectOrType == null) { if (previousGenerator is IHaveGenerator haveGenerator) { previousGenerator = haveGenerator.Generator; } if (previousGenerator != null) { generatorObjectOrType = new TypeOrObject <IGenerator>((IGenerator)Activator.CreateInstance(previousGenerator.GetType())); } else { throw new InitializationException( $"Could not create generator because {GetPropertyPath(generatorSetupIndex)} was not defined and no previous generator was found.", setupInfo.Origin, GetPropertyPath(generatorSetupIndex)); } } var generator = generatorObjectOrType.Object ?? (IGenerator)Activator.CreateInstance(generatorObjectOrType.Type); if (generator is IGenerator <ISetup, IGeneratorSetup, ITarget, object, IRun, object> genericGenerator) { return(genericGenerator); } var generatorType = generator.GetType(); var generatorInterfaceType = generatorType.GetGenericInterface(typeof(IGenerator <, , , , ,>)); if (generatorInterfaceType != null) { return((IGenerator <ISetup, IGeneratorSetup, ITarget, object, IRun, object>)Activator.CreateInstance(typeof(GeneratorAdapter <, , , , ,>).MakeGenericType(generatorInterfaceType.GenericTypeArguments), generator)); } throw new InitializationException( $"Could not create generator, because the {generatorType.Name} does not implement {typeof(IGenerator<,,,>).Name} or {typeof(IGenerator<,,,,>).Name} or {typeof(IGenerator<,,,,,>).Name}, please check the setup.", setupInfo.Origin, GetPropertyPath(generatorSetupIndex)); }
/// <summary> /// Initializes a new instance of the <see cref="GeneratorSetup" /> class. /// </summary> /// <param name="generator">The generator.</param> /// <param name="writerSetups">The writer setups.</param> /// <param name="skipGlobalWriterSetup">if set to <c>true</c> [skip global writer setup].</param> /// <param name="shareGlobalWriters">if set to <c>true</c> [share global writers].</param> public GeneratorSetup(TypeOrObject <IGenerator> generator, IReadOnlyList <IWriterSetup>?writerSetups, bool skipGlobalWriterSetup, bool shareGlobalWriters) : base(generator, writerSetups, skipGlobalWriterSetup, shareGlobalWriters) { }
/// <summary> /// Initializes a new instance of the <see cref="ModelSetup" /> class. /// </summary> /// <param name="provider">The provider.</param> /// <param name="modelType">Type of the model.</param> public ModelSetup(TypeOrObject <IModelProvider> provider, Type modelType) : this() { this.Provider = provider; this.ModelType = modelType; }
/// <summary> /// Initializes a new instance of the <see cref="FolderModelSetup"/> class. /// </summary> /// <param name="provider">The provider.</param> /// <param name="modelType">Type of the model.</param> /// <param name="folder">The folder.</param> /// <param name="filesSearchPattern">The files search pattern.</param> public FolderModelSetup(TypeOrObject <IModelProvider> provider, Type modelType, string folder, string filesSearchPattern) : base(provider, modelType) { this.Folder = folder; this.FilesSearchPattern = filesSearchPattern; }
/// <summary> /// Initializes a new instance of the <see cref="MsBuildWriterSetup" /> class. /// </summary> /// <param name="fileExtension">The file extension.</param> /// <param name="fileNameSuffix">The file name suffix.</param> /// <param name="folder">The folder.</param> /// <param name="target">The target.</param> /// <param name="writer">The writer.</param> /// <param name="addFilesToProject">if set to <c>true</c> [add files to project].</param> public MsBuildWriterSetup(string fileExtension, string fileNameSuffix, string folder, string target, TypeOrObject <IWriter> writer, bool addFilesToProject) : base(fileExtension, fileNameSuffix, folder, target, writer) { this.AddFilesToProject = addFilesToProject; }
public FileWriterSetup(string fileExtension, string fileNameSuffix, string folder, string target, TypeOrObject <IWriter> writer) : base(target, writer) { this.FileExtension = fileExtension; this.FileNameSuffix = fileNameSuffix; this.Folder = folder; }
public WriterSetup(string target, TypeOrObject <IWriter> writer) { this.Target = target; this.Writer = writer; }