Пример #1
0
 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");
 }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }