在graphql dotnet字段之间重用公共逻辑



如果之前有人问过这个问题,我很抱歉,但我想问一下如何在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);

什么是正确的方法来计算某个字段和另一个字段之间的值SharedBetweenSomeAndAnotherField,就像在字段解析器之外只计算一次变量一样,这样我就可以只计算它一次,然后在某个字段的类型解析器中直接重用它?

谢谢!

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

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;
}

现在你只需要从其他地方打电话给我。

最新更新