【问题标题】:Reusing common logic between graphql-dotnet fields在 graphql-dotnet 字段之间重用通用逻辑
【发布时间】:2021-09-28 09:31:56
【问题描述】:

抱歉,如果之前有人问过这个问题,但我想问一下如何在 graphql-dotnet 类型类中的字段之间重用某些逻辑?

例如

public MyClassType()
{
Name = "MyClassType";
Field<SomeEncloserType>(
            name: "somefield",
resolve: context =>
            {
                var requestName = context.Path.First().ToString();
                var vibrancySettings = (VibrancySettings)context.Variables.ValueFor(requestName);
                var otherSettings = vibrancySettings.SomeOtherSettings;
                var valueSharedBetweenSomeAndAnotherField = otherSettings.SomeCalcProperty;
                ...

                .....
            });

并且需要在所有地方都使用相同的逻辑,

Field<SomeEncloserType>(
            name: "anotherfield",
resolve: context =>
            {
                var requestName = context.Path.First().ToString();
                var vibrancySettings = (VibrancySettings)context.Variables.ValueFor(requestName);

在字段解析器之外计算 valueSharedBetweenSomeAndAnotherField 的正确方法是什么?

谢谢!

【问题讨论】:

    标签: c# graphql-dotnet


    【解决方案1】:

    您可以将获取该信息的逻辑移动到另一个方法中并从两个地方调用它,

    public static TypeOfSomeOtherCalc GetSomeOtherCalc(IResolveContext context)
    {
      var requestName = context.Path.First().ToString();
      var vibrancySettings = (VibrancySettings)context.Variables.ValueFor(requestName);
      var otherSettings = vibrancySettings.SomeOtherSettings;
      var valueSharedBetweenSomeAndAnotherField = otherSettings.SomeCalcProperty;
      return valueSharedBetweenSomeAndAnotherField;
    }
    

    现在你只需从其他地方调用它。

    【讨论】:

      猜你喜欢
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 2018-07-27
      • 2018-10-20
      • 2023-03-31
      • 1970-01-01
      • 2019-01-23
      相关资源
      最近更新 更多