Hi. I have a few questions regarding GraphQlQueryParameter<T> and QueryBuilderParameter<T> design.
The first one is used to create the parametrized query (WithParameter method). The second is to provide an inline arguments value or parameter name (With{FIELD} methods).
GraphQlQueryParameter<T> has a few constructors. When using
public GraphQlQueryParameter(string name, string graphQlTypeName = null)
I expect the nullability to be inferred from the T nullability, including respecting the NRT if enabled. But instead, it always creates nullable arguments. For example, Int instead of Int!. It also seems to have a bug in the following line because ? shouldn't be appended to the graphql type name:
var nullableSuffix = nullableUnderlyingType == null ? null : "?";
So, my question is if there is any reason why this constructor won't be able to infer the nullability from the T?
- There is an additional constructor.
public GraphQlQueryParameter(string name, T defaultValue, bool isNullable = true)
That allows to define the nullability manually, but T defaultValue is required in this constructor. Any reason why I can't override the nullability without specifying the default value?
- The
QueryBuilderParameter<T> doesn't have public constructors. This forces me to use GraphQlQueryParameter<T> and provide redundant parameters like graphql type name or isNullable and enforces validations that are not relevant here. I understand that I can reuse an instance that was passed into WithParameter but it makes the API "less fluent". I also understand that adding a public constructor with a single argument for a parameter name will create ambiguity with a private constructor when T is string, but maybe design can be changed slightly to allow simple creation of the QueryBuilderParameter<T> instance.
Hi. I have a few questions regarding
GraphQlQueryParameter<T>andQueryBuilderParameter<T>design.The first one is used to create the parametrized query (
WithParametermethod). The second is to provide an inline arguments value or parameter name (With{FIELD}methods).GraphQlQueryParameter<T>has a few constructors. When usingI expect the nullability to be inferred from the
Tnullability, including respecting the NRT if enabled. But instead, it always creates nullable arguments. For example,Intinstead ofInt!. It also seems to have a bug in the following line because?shouldn't be appended to the graphql type name:So, my question is if there is any reason why this constructor won't be able to infer the nullability from the
T?That allows to define the nullability manually, but
T defaultValueis required in this constructor. Any reason why I can't override the nullability without specifying the default value?QueryBuilderParameter<T>doesn't have public constructors. This forces me to useGraphQlQueryParameter<T>and provide redundant parameters like graphql type name orisNullableand enforces validations that are not relevant here. I understand that I can reuse an instance that was passed intoWithParameterbut it makes the API "less fluent". I also understand that adding a public constructor with a single argument for a parameter name will create ambiguity with a private constructor whenTisstring, but maybe design can be changed slightly to allow simple creation of theQueryBuilderParameter<T>instance.