protected override async Task WriteAsync( CodeWriter writer, IEnumDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentedLineAsync("public enum {0}", descriptor.Name); await writer.WriteIndentedLineAsync("{"); using (writer.IncreaseIndent()) { for (int i = 0; i < descriptor.Values.Count; i++) { await writer.WriteIndentAsync(); await writer.WriteAsync(descriptor.Values[i].Name); if (i < descriptor.Values.Count - 1) { await writer.WriteAsync(","); } await writer.WriteLineAsync(); } } await writer.WriteIndentedLineAsync("}"); }
private async Task WriteObjectPropertyDeserializationAsync( CodeWriter writer, IResultParserTypeDescriptor possibleType, string jsonElement, ITypeLookup typeLookup) { for (int i = 0; i < possibleType.ResultDescriptor.Fields.Count; i++) { IFieldDescriptor fieldDescriptor = possibleType.ResultDescriptor.Fields[i]; await writer.WriteIndentAsync().ConfigureAwait(false); if (fieldDescriptor.Type.NamedType().IsLeafType()) { ITypeInfo typeInfo = typeLookup.GetTypeInfo( fieldDescriptor.Type, true); string deserializeMethod = SerializerNameUtils.CreateDeserializerName( fieldDescriptor.Type); await writer.WriteAsync(deserializeMethod).ConfigureAwait(false); await writer.WriteAsync('(').ConfigureAwait(false); await writer.WriteAsync(jsonElement).ConfigureAwait(false); await writer.WriteAsync(", \"").ConfigureAwait(false); await writer.WriteAsync(fieldDescriptor.ResponseName).ConfigureAwait(false); await writer.WriteAsync("\")").ConfigureAwait(false); } else { await writer.WriteAsync("Parse").ConfigureAwait(false); await writer.WriteAsync(GetPathName(fieldDescriptor.Path)) .ConfigureAwait(false); await writer.WriteAsync('(').ConfigureAwait(false); await writer.WriteAsync(jsonElement).ConfigureAwait(false); await writer.WriteAsync(", \"").ConfigureAwait(false); await writer.WriteAsync(fieldDescriptor.ResponseName).ConfigureAwait(false); await writer.WriteAsync("\")").ConfigureAwait(false); } if (i < possibleType.ResultDescriptor.Fields.Count - 1) { await writer.WriteAsync(',').ConfigureAwait(false); } await writer.WriteLineAsync().ConfigureAwait(false); } }
protected override async Task WriteAsync( CodeWriter writer, IEnumDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentedLineAsync( $"{ModelAccessModifier} partial enum {descriptor.Name}") .ConfigureAwait(false); await writer.WriteIndentedLineAsync("{") .ConfigureAwait(false); using (writer.IncreaseIndent()) { for (int i = 0; i < descriptor.Values.Count; i++) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync(descriptor.Values[i].Name).ConfigureAwait(false); if (i < descriptor.Values.Count - 1) { await writer.WriteAsync(",").ConfigureAwait(false); } await writer.WriteLineAsync().ConfigureAwait(false); } } await writer.WriteIndentedLineAsync("}").ConfigureAwait(false); }
private async Task WriteDeserializeLeafListAsync( CodeWriter writer, ITypeLookup typeLookup, string methodName, IType type, string schemaTypeName, string serializerMethod) { IType elementType = type.ElementType(); string clrTypeName = typeLookup.GetLeafClrTypeName(type); string clrElementTypeName = typeLookup.GetLeafClrTypeName(elementType); await WriteDeserializerMethodAsync( writer, methodName, clrTypeName, async() => { await WriteNullHandlingAsync( writer, "obj", "list", type.IsNonNullType()) .ConfigureAwait(false); await WriteDeserializeListAsync( writer, "list", "i", "element", clrElementTypeName, elementType.IsNonNullType(), () => WriteAddElementAsync( writer, clrElementTypeName, schemaTypeName, "list", "i", "element", serializerMethod)) .ConfigureAwait(false); }).ConfigureAwait(false); ; }
protected static async Task <string> WriteAllAsync( IReadOnlyCollection <ICodeDescriptor> descriptors, ITypeLookup typeLookup) { var generators = new ICodeGenerator[] { new InterfaceGenerator(), new ClassGenerator() }; using (var stream = new MemoryStream()) { using (var sw = new StreamWriter(stream, Encoding.UTF8)) { using (var cw = new CodeWriter(sw)) { foreach (ICodeGenerator generator in generators) { foreach (ICodeDescriptor descriptor in descriptors) { if (generator.CanHandle(descriptor)) { await generator.WriteAsync( cw, descriptor, typeLookup); await cw.WriteLineAsync(); } } } } } return(Encoding.UTF8.GetString(stream.ToArray())); } }
public async Task WriteAllAsync(ITypeLookup typeLookup) { var usedNames = new HashSet <string>(); using (var stream = new MemoryStream()) { using (var sw = new StreamWriter(stream, Encoding.UTF8)) { using (var cw = new CodeWriter(sw)) { foreach (GeneratorTask task in _tasks) { if (task.Descriptor.GetType() != typeof(QueryDescriptor)) { await task.Generator.WriteAsync( cw, task.Descriptor, typeLookup); await cw.WriteLineAsync(); await cw.WriteLineAsync(); } } } } Content = Encoding.UTF8.GetString(stream.ToArray()); } }
private async Task WriteParserForSingleResultType( CodeWriter writer, IResultParserMethodDescriptor methodDescriptor, IResultParserTypeDescriptor possibleType, ITypeLookup typeLookup) { if (methodDescriptor.ResultType.IsListType()) { await WriteListAsync( writer, methodDescriptor, possibleType, "obj", "element", "list", "entity", typeLookup); } else { await WriteCreateObjectAsync( writer, methodDescriptor, possibleType, "obj", typeLookup); } await writer.WriteLineAsync(); }
protected override Task WriteAsync( CodeWriter writer, IServicesDescriptor descriptor, ITypeLookup typeLookup) => WriteStaticClassAsync(writer, descriptor.Name, async() => { await WriteAddClientAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteAddSerializersAsync(writer, descriptor.Client).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteAddEnumSerializersAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteAddInputSerializersAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteAddResultParsersAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteTryAddDefaultOperationSerializerAsync(writer).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteTryAddDefaultHttpPipelineAsync(writer).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteClientFactoryAsync(writer, descriptor.Client).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WritePipelineFactoryAsync(writer, descriptor.Client).ConfigureAwait(false); });
private async Task WriteParserForSingleResultType( CodeWriter writer, IResultParserMethodDescriptor methodDescriptor, IResultParserTypeDescriptor possibleType, ITypeLookup typeLookup) { if (methodDescriptor.ResultType.IsListType()) { await WriteListAsync( writer, methodDescriptor, "obj", "element", "list", typeLookup) .ConfigureAwait(false); } else { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("return ").ConfigureAwait(false); await WriteCreateObjectAsync( writer, methodDescriptor, possibleType, "obj", typeLookup) .ConfigureAwait(false); } }
public async Task WriteAsync( CodeWriter writer, ICodeDescriptor descriptor, ITypeLookup typeLookup) { await WriteUsings(writer, _innerGenerator).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteAsync($"namespace {_namespace}").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteAsync('{').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await _innerGenerator.WriteAsync( writer, descriptor, typeLookup) .ConfigureAwait(false); } await writer.WriteAsync('}').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private async Task WriteParserForMultipleResultTypes( CodeWriter writer, IResultParserMethodDescriptor methodDescriptor, ITypeLookup typeLookup) { if (methodDescriptor.ResultType.IsListType()) { await WriteListAsync( writer, methodDescriptor, "obj", "element", "list", typeLookup); } else { await WriteAbstractTypeHandlingAsync( writer, methodDescriptor, typeLookup, "obj", async m => { await writer.WriteIndentAsync(); await writer.WriteAsync("return "); await WriteCreateObjectAsync( writer, methodDescriptor, m, "obj", typeLookup); }); } }
public Task WriteAsync( CodeWriter writer, ICodeDescriptor descriptor, ITypeLookup typeLookup) { if (writer is null) { throw new ArgumentNullException(nameof(writer)); } if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } if (typeLookup is null) { throw new ArgumentNullException(nameof(typeLookup)); } if (descriptor is T t) { return(WriteAsync(writer, t, typeLookup)); } throw new ArgumentException( "The code generator expected " + $"descriptor type `{typeof(T).FullName}`."); }
private async Task ExecuteGeneratorAsync( GeneratorTask task, ITypeLookup typeLookup, ISet <string> usedNames) { string fileName = task.Generator.CreateFileName(task.Descriptor); fileName = Path.Combine(_directoryName, fileName); lock (usedNames) { if (!usedNames.Add(fileName)) { throw new InvalidOperationException( $"The file name `{fileName}` was already used."); } } using (FileStream stream = File.Create(fileName)) { using (var sw = new StreamWriter(stream, Encoding.UTF8)) { using (var cw = new CodeWriter(sw)) { await task.Generator.WriteAsync( cw, task.Descriptor, typeLookup); } } } }
protected override async Task WriteAsync( CodeWriter writer, IOperationDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync( $"{ModelAccessModifier} partial class ") .ConfigureAwait(false); await writer.WriteAsync(descriptor.Name).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync( $": IOperation<{descriptor.ResultType.Name}>") .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteLeftBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await WriteOperationPropertiesAsync( writer, descriptor, typeLookup) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); if (descriptor.Arguments.Count > 0) { await WriteArgumentsAsync( writer, descriptor, typeLookup) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await WriteVariablesAsync( writer, descriptor, typeLookup) .ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteRightBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private async Task WriteCreateListElementAsync( CodeWriter writer, IResultParserMethodDescriptor methodDescriptor, IResultParserTypeDescriptor possibleType, string jsonElement, string listField, string indexField, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync(string.Format( "{0}[{1}] = ", listField, indexField)) .ConfigureAwait(false); await WriteCreateObjectAsync( writer, methodDescriptor, possibleType, jsonElement, typeLookup) .ConfigureAwait(false); }
protected override async Task WriteAsync( CodeWriter writer, IInputClassDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("public class ").ConfigureAwait(false); await writer.WriteAsync(descriptor.Name).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteLeftBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { for (int i = 0; i < descriptor.Fields.Count; i++) { IInputFieldDescriptor fieldDescriptor = descriptor.Fields[i]; string typeName = typeLookup.GetTypeName( fieldDescriptor.Type, fieldDescriptor.InputObjectType?.Name, false); if (i > 0) { await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync($"public Optional<{typeName}>") .ConfigureAwait(false); await writer.WriteSpaceAsync().ConfigureAwait(false); await writer.WriteAsync(GetPropertyName(fieldDescriptor.Name)) .ConfigureAwait(false); await writer.WriteSpaceAsync().ConfigureAwait(false); await writer.WriteAsync("{ get; set; }").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteRightBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private async Task WriteDeserializeMethodAsync( CodeWriter writer, IResultParserTypeDescriptor possibleType, ITypeLookup typeLookup, ISet <string> generatedMethods) { bool first = true; foreach (IFieldDescriptor fieldDescriptor in possibleType.ResultDescriptor.Fields) { if (fieldDescriptor.Type.NamedType().IsLeafType()) { ITypeInfo typeInfo = typeLookup.GetTypeInfo( fieldDescriptor.Type, false); string methodName = CreateDeserializerName(typeInfo); if (generatedMethods.Add(methodName)) { string serializerMethod = _jsonMethod[typeInfo.SerializationType]; if (fieldDescriptor.Type.IsListType() && fieldDescriptor.Type.ListType().ElementType.IsListType()) { if (!first) { await writer.WriteLineAsync(); } first = false; await WriteDeserializeNestedLeafList( writer, methodName, typeInfo, serializerMethod); } else if (fieldDescriptor.Type.IsListType() && fieldDescriptor.Type.ListType().ElementType.IsLeafType()) { if (!first) { await writer.WriteLineAsync(); } first = false; await WriteDeserializeLeafList( writer, methodName, typeInfo, serializerMethod); } else { if (!first) { await writer.WriteLineAsync(); } first = false; await WriteDeserializeLeaf( writer, methodName, typeInfo, serializerMethod); } } } } }
protected override async Task WriteAsync( CodeWriter writer, IInputClassDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("public class ").ConfigureAwait(false); await writer.WriteAsync(descriptor.Name).ConfigureAwait(false); await writer.WriteAsync("Serializer").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync(": IValueSerializer").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteLeftBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await WriteSerializerFieldsAsync(writer, descriptor) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteConstructorAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteProperties(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteSerializeMethod(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteDeserializeMethod(writer, descriptor).ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteRightBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
protected override async Task WriteAsync( CodeWriter writer, IInputClassDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync($"{ModelAccessModifier} partial class ").ConfigureAwait(false); await writer.WriteAsync(descriptor.Name).ConfigureAwait(false); await writer.WriteAsync("Serializer").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync(": IInputSerializer").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteLeftBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await WriteSerializerFieldsAsync(writer, descriptor) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WritePropertiesAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteInitializationAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteSerializeMethodAsync(writer, descriptor).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteDeserializeMethodAsync(writer, descriptor).ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteRightBraceAsync().ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private async Task WriteOperationAsync( CodeWriter writer, IOperationDescriptor operation, string operationTypeName, ITypeLookup typeLookup) { await WriteOperationSignature( writer, operation, operationTypeName, true, typeLookup) .ConfigureAwait(false); await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync('{').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await WriteOperationNullChecksAsync( writer, operation, typeLookup) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentAsync().ConfigureAwait(false); if (operation.Operation.Operation == OperationType.Subscription) { await writer.WriteAsync("return _streamExecutor.ExecuteAsync(") .ConfigureAwait(false); } else { await writer.WriteAsync("return _executor.ExecuteAsync(") .ConfigureAwait(false); } await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await WriteCreateOperationAsync( writer, operation, typeLookup) .ConfigureAwait(false); await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("cancellationToken);").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync('}').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private Task WriteParserForSingleResultType( CodeWriter writer, IResultParserMethodDescriptor methodDescriptor, ITypeLookup typeLookup) => WriteParserForSingleResultType( writer, methodDescriptor, methodDescriptor.PossibleTypes[0], typeLookup);
protected override async Task WriteAsync( CodeWriter writer, IEnumDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentedLineAsync( $"{ModelAccessModifier} partial class {descriptor.Name}ValueSerializer") .ConfigureAwait(false); using (writer.IncreaseIndent()) { await writer.WriteIndentedLineAsync(": IValueSerializer").ConfigureAwait(false); } await writer.WriteIndentedLineAsync("{").ConfigureAwait(false); using (writer.IncreaseIndent()) { await writer.WriteIndentedLineAsync( "public string Name => \"{0}\";", descriptor.Name) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentedLineAsync( "public ValueKind Kind => ValueKind.Enum;") .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentedLineAsync( "public Type ClrType => typeof({0});", descriptor.Name) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentedLineAsync( "public Type SerializationType => typeof(string);") .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteSerializeMethodAsync(writer, descriptor, typeLookup) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteDeserializeMethodAsync(writer, descriptor, typeLookup) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteIndentedLineAsync("}").ConfigureAwait(false); }
private async Task WriteDeserializeMethodAsync( CodeWriter writer, IResultParserTypeDescriptor possibleType, ITypeLookup typeLookup, ISet <string> generatedMethods) { bool first = true; foreach (IType type in possibleType.ResultDescriptor.Fields .Where(t => t.Type.NamedType().IsLeafType()) .Select(t => t.Type)) { string methodName = SerializerNameUtils.CreateDeserializerName(type); if (generatedMethods.Add(methodName)) { Type serializationType = typeLookup.GetSerializationType(type); string serializerMethod = _jsonMethod[serializationType]; if (!first) { await writer.WriteLineAsync().ConfigureAwait(false); } first = false; if (type.IsListType() && type.ListType().ElementType.IsListType()) { // TODO : implement this throw new NotImplementedException(); } else if (type.IsListType() && type.ListType().ElementType.IsLeafType()) { await WriteDeserializeLeafListAsync( writer, typeLookup, methodName, type, type.NamedType().Name, serializerMethod) .ConfigureAwait(false); } else { await WriteDeserializeLeafAsync( writer, methodName, typeLookup.GetLeafClrTypeName(type), type.NamedType().Name, serializerMethod, type.IsNonNullType()) .ConfigureAwait(false); } } } }
/// <summary> /// Initializes a new instance of the <see cref="FieldDeclarationSyntaxFactory"/> class. /// </summary> /// <param name="fieldInfo"></param> /// <param name="typeLookup"></param> public FieldDeclarationSyntaxFactory(IFieldInfoProxy fieldInfo, ITypeLookup typeLookup) : base(fieldInfo) { if (typeLookup == null) { throw new ArgumentNullException(nameof(typeLookup)); } this.typeLookup = typeLookup; }
/// <summary> /// Initializes a new instance of the <see cref="MethodDeclarationSyntaxFactory"/> class. /// </summary> /// <param name="methodInfo"></param> /// <param name="typeLookup"></param> /// <param name="withBody"></param> public MethodDeclarationSyntaxFactory(IMethodInfoProxy methodInfo, ITypeLookup typeLookup, bool withBody = true) : base(methodInfo, withBody) { if (typeLookup == null) { throw new ArgumentNullException(nameof(typeLookup)); } this.typeLookup = typeLookup; }
/// <summary> /// Initializes a new instance of the <see cref="ConstructorDeclarationSyntaxFactory"/> class. /// </summary> /// <param name="ctorInfo"></param> /// <param name="classInfo"></param> /// <param name="typeLookup"></param> public ConstructorDeclarationSyntaxFactory(IConstructorInfoProxy ctorInfo, ITypeInfoProxy classInfo, ITypeLookup typeLookup) : base(ctorInfo, classInfo) { if (typeLookup == null) { throw new ArgumentNullException(nameof(typeLookup)); } this.typeLookup = typeLookup; }
/// <summary> /// Initializes a new instance of the <see cref="InterfaceDeclarationSyntaxFactory"/> class. /// </summary> /// <param name="interfaceInfo"></param> /// <param name="typeLookup"></param> public InterfaceDeclarationSyntaxFactory(ITypeInfoProxy interfaceInfo, ITypeLookup typeLookup) : base(interfaceInfo) { if (typeLookup == null) { throw new ArgumentNullException(nameof(typeLookup)); } this.typeLookup = typeLookup; }
protected override async Task WriteAsync( CodeWriter writer, IClientDescriptor descriptor, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync( $"{ClientAccessModifier} partial interface ") .ConfigureAwait(false); await writer.WriteAsync(GetInterfaceName(descriptor.Name)).ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("{").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { for (int i = 0; i < descriptor.Operations.Count; i++) { IOperationDescriptor operation = descriptor.Operations[i]; string typeName = typeLookup.GetTypeName( new NonNullType(operation.OperationType), operation.ResultType.Name, true); if (i > 0) { await writer.WriteLineAsync().ConfigureAwait(false); } await WriteOperationAsync( writer, operation, typeName, true, typeLookup) .ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await WriteOperationRequestAsync( writer, operation, typeName, true) .ConfigureAwait(false); } } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("}").ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private async Task WriteVariableAsync( CodeWriter writer, Descriptors.IArgumentDescriptor argument, ITypeLookup typeLookup) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("if(_modified_").ConfigureAwait(false); await writer.WriteAsync(GetFieldName(argument.Name)).ConfigureAwait(false); await writer.WriteAsync(')').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync('{').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); using (writer.IncreaseIndent()) { await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("variables.Add(new VariableValue(").ConfigureAwait(false); await writer.WriteStringValueAsync(argument.Name).ConfigureAwait(false); await writer.WriteAsync(", ").ConfigureAwait(false); await writer.WriteStringValueAsync( argument.Type.NamedType().Name) .ConfigureAwait(false); await writer.WriteAsync(", ").ConfigureAwait(false); await writer.WriteAsync(GetPropertyName(argument.Name)).ConfigureAwait(false); await writer.WriteAsync(')').ConfigureAwait(false); await writer.WriteAsync(')').ConfigureAwait(false); await writer.WriteAsync(';').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync('}').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); }
private async Task WriteFieldsAsync( CodeWriter writer, IOperationDescriptor descriptor, ITypeLookup typeLookup) { if (descriptor.Arguments.Count > 0) { for (int i = 0; i < descriptor.Arguments.Count; i++) { Descriptors.IArgumentDescriptor argument = descriptor.Arguments[i]; await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("private bool _modified_").ConfigureAwait(false); await writer.WriteAsync(GetFieldName(argument.Name)).ConfigureAwait(false); await writer.WriteAsync(';').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } await writer.WriteLineAsync().ConfigureAwait(false); for (int i = 0; i < descriptor.Arguments.Count; i++) { Descriptors.IArgumentDescriptor argument = descriptor.Arguments[i]; string typeName = typeLookup.GetTypeName( argument.Type, argument.Type.NamedType().Name, true); await writer.WriteIndentAsync().ConfigureAwait(false); await writer.WriteAsync("private ").ConfigureAwait(false); await writer.WriteAsync(typeName).ConfigureAwait(false); await writer.WriteSpaceAsync().ConfigureAwait(false); await writer.WriteAsync("_value_").ConfigureAwait(false); await writer.WriteAsync(GetFieldName(argument.Name)).ConfigureAwait(false); await writer.WriteAsync(';').ConfigureAwait(false); await writer.WriteLineAsync().ConfigureAwait(false); } } }