protected override void Generate( CodeWriter writer, InterfaceTypeDescriptor descriptor, out string fileName) { fileName = descriptor.RuntimeType.Name; InterfaceBuilder interfaceBuilder = InterfaceBuilder.New().SetName(fileName); foreach (var prop in descriptor.Properties) { interfaceBuilder.AddProperty( prop.Name, x => x.SetType(prop.Type.ToBuilder()).SetAccessModifier(AccessModifier.Public)); } foreach (NameString implement in descriptor.Implements) { interfaceBuilder.AddImplements(implement); } CodeFileBuilder .New() .SetNamespace(descriptor.RuntimeType.NamespaceWithoutGlobal) .AddType(interfaceBuilder) .Build(writer); }
protected override Task WriteAsync( CodeWriter writer, OutputModelInterfaceDescriptor descriptor) { if (writer is null) { throw new ArgumentNullException(nameof(writer)); } if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } InterfaceBuilder builder = InterfaceBuilder.New() .SetAccessModifier(AccessModifier.Public) .SetName(descriptor.Name); foreach (var typeName in descriptor.Implements) { builder.AddImplements(typeName); } foreach (OutputFieldDescriptor field in descriptor.Fields) { builder.AddProperty( InterfacePropertyBuilder.New() .SetName(field.Name) .SetType(field.Type)); } return(builder.BuildAsync(writer)); }