Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.net core中将泛型类与graphql一起使用_C#_.net Core_Graphql_Asp.net Core 2.0_Asp.net Core Webapi - Fatal编程技术网

C# 在.net core中将泛型类与graphql一起使用

C# 在.net core中将泛型类与graphql一起使用,c#,.net-core,graphql,asp.net-core-2.0,asp.net-core-webapi,C#,.net Core,Graphql,Asp.net Core 2.0,Asp.net Core Webapi,我是新手,我正在制作一个小网站,用于管理学生和课堂 在我的应用程序中,我有一个泛型类: public class RangeModel<TFrom, TTo> { #region Propertes public TFrom From { get; set; } public TTo To { get; set; } #endregion } 并将我的查询定义如下: var studentsQue

我是新手,我正在制作一个小网站,用于管理学生和课堂

在我的应用程序中,我有一个泛型类:

public class RangeModel<TFrom, TTo>
    {
        #region Propertes

        public TFrom From { get; set; }

        public TTo To { get; set; }

        #endregion
    }
并将我的查询定义如下:

var studentsQueryArguments = new QueryArguments();
            studentsQueryArguments.Add(new QueryArgument<ListGraphType<IntGraphType>> { Name = "ids", Description = "Student indexes." });
            studentsQueryArguments.Add(new QueryArgument<ObjectGraphType<RangeModelType<double?, double?>>>{Name = "age", Description = "Age range of student."});
            Field<ListGraphType<StudentType>>(
                "students",
                arguments: studentsQueryArguments,
                resolve: context =>
                {
                    // Resolve data...
                    return results;
                });
        }
var studentsQueryArguments=newqueryarguments();
添加(新的QueryArgument{Name=“ids”,Description=“Student index.”);
添加(新的QueryArgument{Name=“age”,Description=“学生的年龄范围”。});
场(
“学生”,
论点:studentsQueryArguments,
解析:上下文=>
{
//解析数据。。。
返回结果;
});
}
当我运行我的应用程序并进行查询时。返回了一个异常,该异常表示:

无法将GraphQL.Types.ObjectGraphType1[GraphQlStudy.Models.GraphQL.Types.RangeModelType2[System.Nullable1[System.Double],System.Nullable1[System.Double]]]”类型的对象强制转换为“GraphQL.Types.ScalarGraphType”

我一直在搜索使用GraphQL和泛型类的教程,但没有提到使用这种泛型类

有人能帮我吗


谢谢,

在花了几个小时之后,我有以下解决方案

  • RangeModel.cs
    定义为:

    public class RangeModel<TFrom, TTo>
    {
        public TFrom From { get; set; }
    
        public TTo To { get; set; }
    }
    
  • 这是我的查询参数:

    studentsQueryArguments.Add(new QueryArgument<RangeModelType<double?, double?>> {Name = "age", Description = "Age range of student."});
    
    studentsQueryArguments.Add(新的QueryArgument{Name=“age”,Description=“学生的年龄范围”);
    
  • 我不知道这个实现是否好。现在,它解决了我的问题


    希望有帮助。

    我对graphQL了解不多,但这看起来ObjectGraphType和ScalarGraphType不兼容,与泛型无关。。。您可以使用更简单的objectgraphtype来验证这一点。
    public class RangeModelType<TFrom, TTo> : InputObjectGraphType<RangeModel<TFrom, TTo>>
    {
        public RangeModelType()
        {
            var fromType = typeof(TFrom);
            Field(x => x.From, fromType.IsGenericType && fromType.GetGenericTypeDefinition() == typeof(Nullable<>));
    
            var toType = typeof(TTo);
            Field(x => x.To, toType.IsGenericType && toType.GetGenericTypeDefinition() == typeof(Nullable<>));
        }
    }
    
    studentsQueryArguments.Add(new QueryArgument<RangeModelType<double?, double?>> {Name = "age", Description = "Age range of student."});