我正在努力使我的graphQL变异变得通用。但在运行时我得到一个错误。
错误说明:对象引用未设置为对象的实例。
public class ApplicationMutation<T> : ObjectGraphType where T: BaseModel
{
public ApplicationMutation()
{
this.Name = "RootMutation";
var nameofT = typeof(T).GetElementType().Name;
this.Field<AddPayloadType<T>>(
"add" + nameofT,
arguments: new InputQueryArguments<AddInputType<T>>(),
resolve: context =>
{
var input = context.GetArgument<AddInput<T>>("input");
var result = Activator.CreateInstance<T>();
{
Name = "1337 p40c355I73m";
};
return new AddPayload<T>(input, result);
});
this.Field<UpdatePayloadType<T>>(
"update" + nameofT,
arguments: new InputQueryArguments<UpdateInputType<T>>(),
resolve: context =>
{
var input = context.GetArgument<UpdateInput<T>>("input");
var result = Activator.CreateInstance<T>();
{
Name = "rul0r item";
};
return new UpdatePayload<T>(input, result);
});
this.Field<DeletePayloadType<T>>(
"delete" + nameofT,
arguments: new InputQueryArguments<DeleteInputType<T>>(),
resolve: context =>
{
var input = context.GetArgument<DeleteInput<T>>("input");
var result = true;
return new DeletePayload<T>(input, result);
});
}
}
从以下行抛出异常:
var nameofT = typeof(T).GetElementType().Name;
如果需要更多信息,请直接询问。
答案 0 :(得分:1)
您只能将GetElementType()
用于数组,指针和引用类型..
如果当前Type不是数组或指针,或者未通过引用传递,或者在泛型类型或泛型方法的定义中表示泛型类型或类型参数,则返回null https://msdn.microsoft.com/en-us/library/system.type.getelementtype.aspx
对于通用的
,它将返回null