public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("System.Threading.Tasks"); var isPropertyGetterMethod = clrMethodInfo.Metadata.ContainsKey(Constants.MethodMetadata.IsPropertyGetterMethod); var methodNamePrefix = isPropertyGetterMethod ? "Get" : string.Empty; var methodArguments = string.Join(", ", clrMethodInfo.Parameters.Select(parameter => $"{parameter.ParameterType.CSharpName} {parameter.Name}")); var clientMethodInvokeArguments = string.Join("", clrMethodInfo.Parameters.Select(parameter => $", {parameter.Name}")); var clientMethodInvoke = "InvokeVoidAsync"; var methodReturnType = "ValueTask"; if (clrMethodInfo.Return.HasReturnType) { var returnTypeName = clrMethodInfo.Return.ReturnType?.CSharpName; methodReturnType = $"ValueTask<{returnTypeName}>"; if (isPropertyGetterMethod) { clientMethodInvoke = $"GetPropertyAsync<{returnTypeName}>"; } else { clientMethodInvoke = $"InvokeAsync<{returnTypeName}>"; } } codeWriter.PublicMethods .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteWithConverter(clrMethodInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrMethodInfo.ObsoleteMessage) : null) .WriteLine($"public virtual {methodReturnType} {methodNamePrefix}{clrMethodInfo.PublicName}({methodArguments})") .WriteStartBlock() .WriteLine($"return {clientMethodInvoke}(\"{clrMethodInfo.Name}\"{clientMethodInvokeArguments});") .WriteEndBlock(); }
private void WriteCodeFile(CodeFileWriter codeFileWriter, CodeWriterOptions options) { codeFileWriter.WriteUsingStatements(); if (string.IsNullOrEmpty(CodeFile.RelativeNamespace)) { codeFileWriter.WriteNamespace($"{options.RootNamespace}"); } else { codeFileWriter.WriteNamespace($"{options.RootNamespace}.{CodeFile.RelativeNamespace}"); } // start namespace block codeFileWriter.WriteStartBlock(); codeFileWriter.Declaration.WriteLine(CodeFile.Declaration); codeFileWriter.WriteDeclarationSection(); // start declaration block codeFileWriter.WriteStartBlock(); codeFileWriter.WritePropertiesSection(ignoreNewLineInSection: true); codeFileWriter.WriteConstructorsSection(); codeFileWriter.WritePublicPropertiesSection(); codeFileWriter.WritePublicMethodsSection(); codeFileWriter.WriteMethodsSection(); // end declaration block codeFileWriter.WriteEndBlock(); // end namespace block codeFileWriter.WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(clrPropertyInfo.Description)) .WriteWithConverter(clrPropertyInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrPropertyInfo.ObsoleteMessage) : null) .WriteLine($"I{clrPropertyInfo.PropertyType.CSharpName} {clrPropertyInfo.PublicName} {{ get; }}"); }
public override void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement(UsingNamespaces); codeWriter.Properties .WriteLine($"private I{PropertyType} _{propertyName};"); codeWriter.PublicProperties .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteLine($"public I{PropertyType} {propertyName.ToCapitalCase()}") // start property body .WriteStartBlock() .WriteLine($"get") // start property get .WriteStartBlock() .WriteLine($"if (_{propertyName} is null)") .WriteStartBlock() .WriteLine($"_{propertyName} = new {PropertyType}(webExtensionJSRuntime);") .WriteEndBlock() .WriteLine($"return _{propertyName};") // end property get .WriteEndBlock() // end property body .WriteEndBlock(); }
public override void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement(UsingNamespaces); codeWriter.WriteUsingStatement("System.Text.Json.Serialization"); codeWriter.Properties .WriteLine($"private {PropertyType} _{propertyName};"); codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(PropertyDefinition.Description)) .WriteWithConverter(PropertyDefinition.IsDeprecated ? new AttributeObsoleteCodeConverter(PropertyDefinition.Deprecated) : null) .WriteWithConverter(new AttributeCodeConverter($"JsonPropertyName(\"{propertyName}\")")) .WriteLine($"public {PropertyType} {propertyName.ToCapitalCase()}") // start property body .WriteStartBlock() .WriteLine($"get") .WriteStartBlock() .WriteLine($"InitializeProperty(\"{propertyName}\", _{propertyName});") .WriteLine($"return _{propertyName};") .WriteEndBlock() .WriteLine($"set") .WriteStartBlock() .WriteLine($"_{propertyName} = value;") .WriteEndBlock() // end property body .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("System.Threading.Tasks"); var methodArguments = string.Join(", ", clrMethodInfo.Parameters.Select(parameter => $"{parameter.ParameterType.CSharpName} {parameter.Name}")); var clientMethodInvokeArguments = string.Join("", clrMethodInfo.Parameters.Select(parameter => $", {parameter.Name}")); var clientMethodInvoke = "InvokeVoidAsync"; var methodReturnType = "ValueTask"; if (clrMethodInfo.Return.HasReturnType) { var returnTypeName = clrMethodInfo.Return.ReturnType?.CSharpName; methodReturnType = $"ValueTask<{returnTypeName}>"; clientMethodInvoke = $"InvokeAsync<{returnTypeName}>"; } codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter(clrMethodInfo.Description)) .WriteWithConverters(clrMethodInfo.Parameters.Select(parameterInfo => new CommentParamCodeSectionConverter(parameterInfo.Name, parameterInfo.Description))) .WriteWithConverter(clrMethodInfo.Return.HasReturnType ? new CommentReturnsCodeConverter(clrMethodInfo.Return.Description) : null) .WriteWithConverter(clrMethodInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrMethodInfo.ObsoleteMessage) : null) .WriteLine($"public virtual {methodReturnType} {clrMethodInfo.PublicName}({methodArguments})") .WriteStartBlock() .WriteLine($"return {clientMethodInvoke}(\"{clrMethodInfo.Name}\"{clientMethodInvokeArguments});") .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { var propertyType = clrPropertyInfo.PropertyType.CSharpName; var privatePropertyName = clrPropertyInfo.PrivateName; codeWriter.Properties .WriteLine($"private I{clrPropertyInfo.PropertyType.CSharpName} _{privatePropertyName};"); codeWriter.PublicProperties .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteLine($"public I{propertyType} {clrPropertyInfo.PublicName}") // start property body .WriteStartBlock() .WriteLine($"get") // start property get .WriteStartBlock() .WriteLine($"if (_{privatePropertyName} is null)") .WriteStartBlock() .WriteLine($"_{privatePropertyName} = new {propertyType}(JsRuntime, AccessPath);") .WriteEndBlock() .WriteLine($"return _{privatePropertyName};") // end property get .WriteEndBlock() // end property body .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(!string.IsNullOrEmpty(clrEnumValueInfo.Description) ? clrEnumValueInfo.Description : clrEnumValueInfo.Name)) .WriteLine($"[EnumValue(\"{clrEnumValueInfo.Name}\")]") .WriteLine($"{clrEnumValueInfo.CSharpName},"); }
public override void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement(UsingNamespaces); codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(PropertyDefinition.Description)) .WriteWithConverter(PropertyDefinition.IsDeprecated ? new AttributeObsoleteCodeConverter(PropertyDefinition.Deprecated) : null) .WriteLine($"{PropertyType} {propertyName} {{ get; }}"); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { var usingNamespaces = new HashSet <string>(); var typeNames = new HashSet <string>(); var writeParameterlessConstructor = typeChoices.Any(clrTypeInfo => clrTypeInfo.IsNullType); codeWriter.WriteUsingStatement(usingNamespaces); if (writeParameterlessConstructor) { codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{className}\" />.")) .WriteLine($"public {className}() : base(null, null)") .WriteStartBlock() .WriteEndBlock(); } foreach (var clrTypeInfo in typeChoices) { if (typeNames.Contains(clrTypeInfo.CSharpName) || clrTypeInfo.IsNullType) { continue; } typeNames.Add(clrTypeInfo.CSharpName); string?privateField = null; // object and interface implicit conversion is not allowed in C# if (clrTypeInfo.FullName != typeof(object).FullName && !clrTypeInfo.IsInterface) { privateField = $"value{SanitizeVariableName(clrTypeInfo.CSharpName).ToCapitalCase()}"; } codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{className}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("value", "The value.")) .WriteLine($"public {className}({clrTypeInfo.CSharpName} value) : base(value, typeof({clrTypeInfo.CSharpName}))") .WriteStartBlock() .WriteLine(privateField is null ? null : $"{privateField} = value;") .WriteEndBlock(); if (privateField is not null) { codeWriter.Properties .WriteLine($"private readonly {clrTypeInfo.CSharpName} {privateField};"); codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter($"Converts from <see cref=\"{className}\" /> to <see cref=\"{clrTypeInfo.CSharpName}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("value", "The value to convert from.")) .WriteLine($"public static implicit operator {clrTypeInfo.CSharpName}({className} value) => value.{privateField};"); codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter($"Converts from <see cref=\"{clrTypeInfo.CSharpName}\" /> to <see cref=\"{className}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("value", "The value to convert from.")) .WriteLine($"public static implicit operator {className}({clrTypeInfo.CSharpName} value) => new(value);"); } } }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{className}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("webExtensionJSRuntime", "Web Extension JS Runtime")) .WriteLine($"public {className}(WebExtensionJSRuntime webExtensionJSRuntime) : base(webExtensionJSRuntime, \"{apiName}\")") .WriteStartBlock() .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.PublicMethods .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteLine($"public override string ToString()") .WriteStartBlock() .WriteLine("return currentValue?.ToString();") .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("System.Text.Json.Serialization"); codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(clrPropertyInfo.Description)) .WriteWithConverter(clrPropertyInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrPropertyInfo.ObsoleteMessage) : null) .WriteWithConverter(new AttributeCodeConverter($"JsonPropertyName(\"{clrPropertyInfo.Name}\")")) .WriteWithConverter(clrPropertyInfo.PropertyType.IsNullable ? new AttributeCodeConverter($"JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)") : null) .WriteLine($"public {clrPropertyInfo.PropertyType.CSharpName} {clrPropertyInfo.PublicName} {{ get; set; }}"); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("JsBind.Net"); codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{apiRootName}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("jsRuntime", "The JS runtime adapter.")) .WriteLine($"public {apiRootName}(IJsRuntimeAdapter jsRuntime) : base(jsRuntime, \"browser\")") .WriteStartBlock() .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.Properties .WriteLine($"private const string pattern = \"{stringFormat}\";"); codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{className}\" />.")) .WriteLine($"public {className}(string value) : base(value, pattern)") .WriteStartBlock() .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("JsBind.Net"); codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{className}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("jsRuntime", "The JS runtime adapter.")) .WriteWithConverter(new CommentParamCodeSectionConverter("accessPath", "The base API access path.")) .WriteLine($"public {className}(IJsRuntimeAdapter jsRuntime, string accessPath) : base(jsRuntime, AccessPaths.Combine(accessPath, \"{apiName}\"))") .WriteStartBlock() .WriteEndBlock(); }
private void WriteUsingStatements(CodeWriter codeWriter, CodeWriterOptions options) { foreach (var usingNamespace in CodeFile.UsingNamespaces) { codeWriter.WriteUsingStatement(usingNamespace); } foreach (var usingNamespace in CodeFile.UsingRelativeNamespaces) { codeWriter.WriteUsingStatement($"{options.RootNamespace}.{usingNamespace}"); } }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.Properties .WriteLine($"private readonly WebExtensionJSRuntime webExtensionJSRuntime;"); codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{apiRootName}\" />.")) .WriteLine($"public {apiRootName}(WebExtensionJSRuntime webExtensionJSRuntime)") .WriteStartBlock() .WriteLine($"this.webExtensionJSRuntime = webExtensionJSRuntime;") .WriteEndBlock(); }
public void WriteTo(CodeSectionWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("System"); if (string.IsNullOrEmpty(obsoleteMessage) || "True".Equals(obsoleteMessage)) { codeWriter.WriteLine($"[Obsolete(\"This has been marked as deprecated without a description message. Please refer to the summary comment or the official API documentation.\")]"); } else { codeWriter.WriteLine($"[Obsolete(\"{obsoleteMessage}\")]"); } }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter($"Converts from <see cref=\"{className}\" /> to <see cref=\"string\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("value", "The value to convert from.")) .WriteLine($"public static implicit operator string({className} value) => value.Value;"); codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter($"Converts from <see cref=\"string\" /> to <see cref=\"{className}\" />.")) .WriteWithConverter(new CommentParamCodeSectionConverter("value", "The value to convert from.")) .WriteLine($"public static implicit operator {className}(string value) => new(value);"); }
public override void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { if (!PropertyDefinition.IsConstant) { return; } codeWriter.WriteUsingStatement(UsingNamespaces); codeWriter.PublicProperties .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteLine($"public {PropertyType} {propertyName.ToCapitalCase()} => {PropertyDefinition.ConstantValue};"); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { if (enumValueDefinition.Name is null) { return; } var sanitizedValueName = SanitizeValueName(enumValueDefinition.Name.ToCapitalCase()); codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(enumValueDefinition.Description ?? enumValueDefinition.Name)) .WriteLine($"[EnumValue(\"{enumValueDefinition.Name}\")]") .WriteLine($"{sanitizedValueName},"); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { if (clrPropertyInfo.PropertyType.Metadata.TryGetValue(Constants.TypeMetadata.ClassType, out var classType) && (ClassType)classType == ClassType.ApiClass) { new ApiClassInterfaceApiPropertyCodeConverter(clrPropertyInfo) .WriteTo(codeWriter, options); } else { codeWriter.PublicProperties .WriteWithConverter(new CommentSummaryCodeConverter(clrPropertyInfo.Description)) .WriteWithConverter(clrPropertyInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrPropertyInfo.ObsoleteMessage) : null) .WriteLine($"{clrPropertyInfo.PropertyType.CSharpName} {clrPropertyInfo.PublicName} {{ get; }}"); } }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("System"); var propertyTypes = clrPropertyInfos.Select(property => $"typeof({property.PropertyType.CSharpName})"); var propertyNames = clrPropertyInfos.Select(property => $"\"{property.PublicName}\""); codeWriter.Properties .WriteLine($"private static readonly Type[] propertyTypes = new[] {{ {string.Join(", ", propertyTypes)} }};") .WriteLine($"private static readonly string[] propertyNames = new[] {{ {string.Join(", ", propertyNames)} }};"); codeWriter.Constructors .WriteWithConverter(new CommentSummaryCodeConverter($"Creates a new instance of <see cref=\"{className}\" />.")) .WriteLine($"public {className}() : base(propertyTypes, propertyNames)") .WriteStartBlock() .WriteEndBlock(); }
public override void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { if (functionDefinition.Name is null) { return; } codeWriter.WriteUsingStatement(UsingNamespaces); var methodNamePrefix = functionDefinition.Type == ObjectType.PropertyGetterFunction ? "Get" : string.Empty; codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter(functionDefinition.Description)) .WriteWithConverters(ParameterDefinitions.Select(parameterDefinition => new CommentParamCodeSectionConverter(parameterDefinition.Name, parameterDefinition.Description))) .WriteWithConverter(ReturnDefinition is not null ? new CommentReturnsCodeConverter(ReturnDefinition.Description) : null) .WriteWithConverter(functionDefinition.IsDeprecated ? new AttributeObsoleteCodeConverter(functionDefinition.Deprecated) : null) .WriteLine($"{MethodReturnType} {methodNamePrefix}{functionDefinition.Name.ToCapitalCase()}({MethodArguments});"); }
/// <summary> /// Generates the code using the appropriate code provider and writes it to the /// desired location. /// </summary> public static CodeWriterOutput Write(CodeNamespace codeNamespace, CodeWriterOptions options) { if (options.AscendingClassByName) { SortAsc(codeNamespace.Types); } // Create a new instance of CodeWriter class with given options. CodeWriter writer = new CodeWriter(codeNamespace, options); // Execute the code writing procedure. writer.WriteCodeFiles(); // Crate an instance of CodeWriterOutput class with the code writer's output. CodeWriterOutput output = new CodeWriterOutput(writer.generatedCodeFileNames); // Finally return the CodeWriterOutput. return(output); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { if (clrPropertyInfo.PropertyType.Metadata.TryGetValue(Constants.TypeMetadata.ClassType, out var classType) && (ClassType)classType == ClassType.ApiClass) { new ApiClassApiPropertyCodeConverter(clrPropertyInfo) .WriteTo(codeWriter, options); } else if (clrPropertyInfo.IsConstant) { codeWriter.PublicProperties .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteLine($"public {clrPropertyInfo.PropertyType.CSharpName} {clrPropertyInfo.PublicName} => {clrPropertyInfo.ConstantValue};"); } else { // Event property var privatePropertyName = clrPropertyInfo.PrivateName; codeWriter.WriteUsingStatement("JsBind.Net"); codeWriter.Properties .WriteLine($"private {clrPropertyInfo.PropertyType.CSharpName} _{privatePropertyName};"); codeWriter.PublicProperties .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteWithConverter(clrPropertyInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrPropertyInfo.ObsoleteMessage) : null) .WriteLine($"public {clrPropertyInfo.PropertyType.CSharpName} {clrPropertyInfo.PublicName}") // start property body .WriteStartBlock() .WriteLine($"get") // start property get .WriteStartBlock() .WriteLine($"if (_{privatePropertyName} is null)") .WriteStartBlock() .WriteLine($"_{privatePropertyName} = new {clrPropertyInfo.PropertyType.CSharpName}();") .WriteLine($"_{privatePropertyName}.Initialize(JsRuntime, AccessPaths.Combine(AccessPath, \"{privatePropertyName}\"));") .WriteEndBlock() .WriteLine($"return _{privatePropertyName};") // end property get .WriteEndBlock() // end property body .WriteEndBlock(); } }
public override void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { if (functionDefinition.Name is null) { return; } codeWriter.WriteUsingStatement(UsingNamespaces); var methodNamePrefix = functionDefinition.Type == ObjectType.PropertyGetterFunction ? "Get" : string.Empty; codeWriter.PublicMethods .WriteWithConverter(new CommentInheritDocCodeConverter()) .WriteWithConverter(functionDefinition.IsDeprecated ? new AttributeObsoleteCodeConverter(functionDefinition.Deprecated) : null) .WriteLine($"public virtual {MethodReturnType} {methodNamePrefix}{functionDefinition.Name.ToCapitalCase()}({MethodArguments})") .WriteStartBlock() .WriteLine($"return {ClientMethodInvoke}(\"{functionDefinition.Name}\"{ClientMethodInvokeArguments});") .WriteEndBlock(); }
public void WriteTo(CodeWriter codeWriter, CodeWriterOptions options) { codeWriter.WriteUsingStatement("System.Threading.Tasks"); var isPropertyGetterMethod = clrMethodInfo.Metadata.ContainsKey(Constants.MethodMetadata.IsPropertyGetterMethod); var methodNamePrefix = isPropertyGetterMethod ? "Get" : string.Empty; var methodArguments = string.Join(", ", clrMethodInfo.Parameters.Select(parameter => $"{parameter.ParameterType.CSharpName} {parameter.Name}")); var methodReturnType = "ValueTask"; if (clrMethodInfo.Return.HasReturnType) { methodReturnType = $"ValueTask<{clrMethodInfo.Return.ReturnType?.CSharpName}>"; } codeWriter.PublicMethods .WriteWithConverter(new CommentSummaryCodeConverter(clrMethodInfo.Description)) .WriteWithConverters(clrMethodInfo.Parameters.Select(parameterInfo => new CommentParamCodeSectionConverter(parameterInfo.Name, parameterInfo.Description))) .WriteWithConverter(clrMethodInfo.Return.HasReturnType ? new CommentReturnsCodeConverter(clrMethodInfo.Return.Description) : null) .WriteWithConverter(clrMethodInfo.IsObsolete ? new AttributeObsoleteCodeConverter(clrMethodInfo.ObsoleteMessage) : null) .WriteLine($"{methodReturnType} {methodNamePrefix}{clrMethodInfo.PublicName}({methodArguments});"); }
/// <summary> /// Executes the code generation workflow. /// </summary> public CodeWriterOutput GenerateCode(Options.CodeGenOptions options) { ICodeGeneratorContext codeGeneratorContext = buildCodeGeneratorContext(options); ICodeGenerator codeGenerator = this.buildCodeGenerator(options); CodeWriterOptions writeOptions = CodeGenOptionsParser.GetCodeWriterOptions(options); if (options.OnlyUseDataContractSerializer) { CodeCompileUnit targetCodeCompileUnit = codeGenerator.GenerateDataContractCode(codeGeneratorContext); return(CodeWriter.CodeWriter.Write(targetCodeCompileUnit, writeOptions)); } else if (options.GenerateSeparateFilesEachXsd) { CodeNamespace[] targetCodeNamespaces = codeGenerator.GenerateCodes(codeGeneratorContext); return(CodeWriter.CodeWriter.Write(targetCodeNamespaces, writeOptions)); } else { CodeNamespace targetCodeNamespace = codeGenerator.GenerateCode(codeGeneratorContext); return(CodeWriter.CodeWriter.Write(targetCodeNamespace, writeOptions)); } }