public void Write(ConfigurationBase configurationBase, List <ITransferObject> transferObjects, IOutput output) { ReflectionWriteConfiguration configuration = (ReflectionWriteConfiguration)configurationBase; if (configuration.Language == null) { throw new InvalidOperationException($"Can not generate Reflection.Type for language {configuration.Language?.Name ?? "Empty"}"); } List <FileTemplate> files = this.modelWriter.Write(configuration, transferObjects); files.ForEach(file => configuration.Language.Write(file, output)); }
public bool Generate(CommandConfiguration configuration, IOutput output) { //Type type = reflectionConfiguration.GetType(); //foreach (CommandParameter parameter in configuration.Parameters) //{ // PropertyInfo propertyInfo = type.GetProperty(parameter.Name); // if (propertyInfo != null && propertyInfo.CanWrite) // { // propertyInfo.SetValue(reflectionConfiguration, ); // } //} if (configuration.Parameters.GetBool("fromAttributes") || configuration.Parameters.GetBool("fromAttribute")) { string assemblyName = configuration.Parameters.GetString(nameof(ReflectionReadConfiguration.Assembly)); if (!string.IsNullOrEmpty(assemblyName)) { Assembly.LoadFile(assemblyName); } foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (Type objectType in this.GetTypes(assembly)) { foreach (GenerateAttribute attribute in objectType.GetCustomAttributes <GenerateAttribute>()) { ILanguage language = attribute.Language == OutputLanguage.Inherit ? configuration.Language : attribute.Language == OutputLanguage.Csharp ? (ILanguage)CsharpLanguage.Instance : TypeScriptLanguage.Instance; if (!language.IsCsharp() && !language.IsTypeScript()) { Logger.Error($"No language for type {objectType.Name} set. Set a language via attribute or use parameter (-language=Csharp)"); return(false); } ReflectionReadConfiguration readConfiguration = new ReflectionReadConfiguration(); readConfiguration.CopyBaseFrom(configuration); readConfiguration.Language = language; readConfiguration.Name = objectType.Name; readConfiguration.Namespace = objectType.Namespace; readConfiguration.Assembly = objectType.Assembly.Location; readConfiguration.SkipSelf = attribute is GenerateIndexAttribute; List <ITransferObject> transferObjects = new List <ITransferObject>(); this.reader.Read(readConfiguration, transferObjects); ReflectionWriteConfiguration writeConfiguration = new ReflectionWriteConfiguration(); writeConfiguration.CopyBaseFrom(configuration); writeConfiguration.Namespace = objectType.Namespace; writeConfiguration.RelativePath = attribute.RelativePath ?? configuration.Parameters.GetString(nameof(ReflectionWriteConfiguration.RelativePath)); writeConfiguration.SkipNamespace = attribute.SkipNamespace.ToBool(configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.SkipNamespace))); writeConfiguration.PropertiesToFields = attribute.PropertiesToFields.ToBool(configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.PropertiesToFields))); writeConfiguration.FieldsToProperties = attribute.FieldsToProperties.ToBool(configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.FieldsToProperties))); writeConfiguration.FormatNames = attribute.FormatNames.ToBool(configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.FormatNames))); this.writer.Write(writeConfiguration, transferObjects, output); } } } } else { ReflectionReadConfiguration readConfiguration = new ReflectionReadConfiguration(); readConfiguration.CopyBaseFrom(configuration); readConfiguration.Name = configuration.Parameters.GetString(nameof(ReflectionReadConfiguration.Name)); readConfiguration.Namespace = configuration.Parameters.GetString(nameof(ReflectionReadConfiguration.Namespace)); readConfiguration.Assembly = configuration.Parameters.GetString(nameof(ReflectionReadConfiguration.Assembly)); List <ITransferObject> transferObjects = new List <ITransferObject>(); this.reader.Read(readConfiguration, transferObjects); ReflectionWriteConfiguration writeConfiguration = new ReflectionWriteConfiguration(); writeConfiguration.CopyBaseFrom(configuration); writeConfiguration.Namespace = configuration.Parameters.GetString(nameof(ReflectionReadConfiguration.Namespace)); writeConfiguration.RelativePath = configuration.Parameters.GetString(nameof(ReflectionWriteConfiguration.RelativePath)); writeConfiguration.Using = configuration.Parameters.GetString(nameof(ReflectionWriteConfiguration.Using)); writeConfiguration.SkipNamespace = configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.SkipNamespace)); writeConfiguration.PropertiesToFields = configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.PropertiesToFields)); writeConfiguration.FieldsToProperties = configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.FieldsToProperties)); writeConfiguration.FormatNames = configuration.Parameters.GetBool(nameof(ReflectionWriteConfiguration.FormatNames)); this.writer.Write(writeConfiguration, transferObjects, output); } return(true); }