public GetHeroResultBuilder( IEntityStore entityStore, Func <JsonElement, EntityId> extractId, IOperationResultDataFactory <GetHeroResult> resultDataFactory, ISerializerResolver stringParser) { _entityStore = entityStore; _extractId = extractId; _resultDataFactory = resultDataFactory; _stringParser = stringParser.GetLeafValueParser <string, string>("String"); }
protected override void Generate( CodeWriter writer, EnumTypeDescriptor descriptor, out string fileName) { fileName = CreateEnumParserName(descriptor.Name); ClassBuilder classBuilder = ClassBuilder .New(fileName) .AddImplements(IInputValueFormatter) .AddImplements(ILeafValueParser.WithGeneric(String, descriptor.Name)); const string serializedValueParamName = "serializedValue"; classBuilder .AddMethod("Parse") .AddParameter(ParameterBuilder.New() .SetName(serializedValueParamName) .SetType(String)) .SetAccessModifier(AccessModifier.Public) .SetReturnType(descriptor.Name) .AddCode(CreateEnumParsingSwitch(serializedValueParamName, descriptor)); const string runtimeValueParamName = "runtimeValue"; classBuilder .AddMethod("Format") .SetAccessModifier(AccessModifier.Public) .SetReturnType("object") .AddParameter(ParameterBuilder.New() .SetType(Object.MakeNullable()) .SetName(runtimeValueParamName)) .AddCode(CreateEnumFormattingSwitch(runtimeValueParamName, descriptor)); classBuilder .AddProperty("TypeName") .AsLambda(descriptor.Name.AsStringToken()) .SetPublic() .SetType(String); CodeFileBuilder .New() .SetNamespace(descriptor.RuntimeType.NamespaceWithoutGlobal) .AddType(classBuilder) .Build(writer); }
protected override void Generate(EnumTypeDescriptor descriptor, CSharpSyntaxGeneratorSettings settings, CodeWriter writer, out string fileName, out string?path, out string ns) { const string serializedValue = nameof(serializedValue); const string runtimeValue = nameof(runtimeValue); fileName = CreateEnumParserName(descriptor.Name); path = Serialization; ns = descriptor.RuntimeType.NamespaceWithoutGlobal; ClassBuilder classBuilder = ClassBuilder .New(fileName) .AddImplements(IInputValueFormatter) .AddImplements(ILeafValueParser.WithGeneric(String, descriptor.Name)); classBuilder .AddMethod("Parse") .AddParameter(serializedValue, x => x.SetType(String)) .SetAccessModifier(AccessModifier.Public) .SetReturnType(descriptor.Name) .AddCode(CreateEnumParsingSwitch(serializedValue, descriptor)); classBuilder .AddMethod("Format") .SetAccessModifier(AccessModifier.Public) .SetReturnType(Object) .AddParameter(runtimeValue, x => x.SetType(Object.MakeNullable())) .AddCode(CreateEnumFormattingSwitch(runtimeValue, descriptor)); classBuilder .AddProperty("TypeName") .AsLambda(descriptor.Name.AsStringToken()) .SetPublic() .SetType(String); classBuilder.Build(writer); }