Aquí está mi escenario. Tengo una puerta de enlace GraphQL que une una docena de esquemas remotos, usando el siguiente código:
services.AddHttpClient(schema.TypeName, c => c.BaseAddress = new Uri(schema.Url)); public virtual void Add(IRequestExecutorBuilder builder, bool ignoreRootTypes = true) { var type = this.GetType(); builder.AddRemoteSchema(type.Name, ignoreRootTypes); } Suponga que los esquemas remotos son inmutables. Uno de los esquemas remotos tiene un tipo llamado Name . Esta parece ser una palabra clave reservada, porque durante la costura, obtengo la excepción:
Para obtener más detalles, consulte la propiedad
Errors.
- Ya se ha añadido un elemento con la misma clave. Nombre clave
Puedo corregir este error modificando el tipo de Name del servicio remoto para que sea algo como PersonName , sin embargo, como mencioné anteriormente, estos esquemas externos deberían ser inmutables.
¿Hay alguna manera de cambiar el nombre de un tipo restringido antes de que se produzca esta excepción en el nivel de puerta de enlace?
Agregue una llamada a RenameType :
public virtual void Add(IRequestExecutorBuilder builder, bool ignoreRootTypes = true) { var type = this.GetType(); builder.AddRemoteSchema(type.Name, ignoreRootTypes); builder.RenameType("Name", "PersonName", type.Name); }Esto cambiará el nombre del tipo entrante de su esquema remoto a otra cosa.