protected override Task WriteAsync( CodeWriter writer, InputModelSerializerDescriptor descriptor) { if (writer is null) { throw new ArgumentNullException(nameof(writer)); } if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } ClassBuilder classBuilder = ClassBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(descriptor.Name) .AddImplements("global::StrawberryShake.IInputSerializer"); AddFields(descriptor.ValueSerializers, classBuilder); AddProperties(descriptor, classBuilder); AddInitializeMethod(descriptor.ValueSerializers, classBuilder); AddSerializeMethod(descriptor, classBuilder); AddDeserializeMethod(classBuilder); AddTypeSerializerMethods(descriptor.TypeSerializerMethods, classBuilder); return(classBuilder.BuildAsync(writer)); }
protected override Task WriteAsync( CodeWriter writer, InputModelDescriptor descriptor) { if (writer is null) { throw new ArgumentNullException(nameof(writer)); } if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } ClassBuilder builder = ClassBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(descriptor.Name); foreach (InputFieldDescriptor field in descriptor.Fields) { builder.AddProperty( PropertyBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(field.Name) .SetType(field.Type) .MakeSettable()); } return(builder.BuildAsync(writer)); }
protected override Task WriteAsync( CodeWriter writer, OutputModelDescriptor descriptor) { ClassBuilder builder = ClassBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(descriptor.Name); foreach (string typeName in descriptor.Implements) { builder.AddImplements(typeName); } foreach (OutputFieldDescriptor field in descriptor.Fields) { builder.AddProperty( PropertyBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(field.Name) .SetType(field.Type)); } return(builder.BuildAsync(writer)); }
protected override Task WriteAsync( CodeWriter writer, OutputModelDescriptor descriptor) { if (writer is null) { throw new ArgumentNullException(nameof(writer)); } if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } ClassBuilder builder = ClassBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(descriptor.Name); ConstructorBuilder constructorBuilder = ConstructorBuilder.New() .AddCode(CreateConstructorBody(descriptor)); builder.AddConstructor(constructorBuilder); foreach (var typeName in descriptor.Implements) { builder.AddImplements(typeName); } foreach (OutputFieldDescriptor field in descriptor.Fields) { builder.AddProperty( PropertyBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(field.Name) .SetType(field.Type)); constructorBuilder.AddParameter( ParameterBuilder.New() .SetName(field.ParameterName) .SetType(field.Type)); } return(builder.BuildAsync(writer)); }