GraphQL 字段的参数重载

argument overloads for GraphQL field

我正在尝试使用 .Net 实现来实现 GraphQL 服务器 - Conventions

在服务器上我希望我的模式是这样的

public class StarWarsQuery
{
    public IEnumerable<Droid> Droids()
    {
        return droidRepository.GetAllDroids();
    }

    public Droid Droids(string name)
    {
        return droidRepository.GetDroidByName(name);
    }
}

public class Droid
{
    string name { get; set;}
}

这样来自客户端的查询就可以像这样

{
   Droids{
     name
   }
}

{
   Droids(name:"super droid"){
     name
   }
}

Conventions 的当前实现似乎忽略了重载,生成的图形不包含字符串参数,第二个查询失败。

有谁知道当前版本是否可以做到这一点? 如果不是,我需要查看的扩展点在哪里?

约定不支持方法重载,因为在 GraphQL 中无法表示它 - 据我所知,你不能有两个具有相同名称和不同签名的字段。

如果您将代码更改为以下内容,应该没问题:

public class StarWarsQuery
{
    public IEnumerable<Droid> Droids()
    {
        return droidRepository.GetAllDroids();
    }

    public Droid Droid(string name)
    {
        return droidRepository.GetDroidByName(name);
    }
}

public class Droid
{
    string name { get; set;}
}

这样,您就可以运行进行以下查询:

{
  droids{ # note also the lowercase 'd' here
    name
  }
  droid(name:"super droid"){
    name
  }
}