Comments (11)
Even for the records, this doesn't work:
public readonly partial record struct ProductId
{
public System.Guid Value { get; }
public ProductId(System.Guid value)
{
Value = value;
}
}
But this does work:
public readonly partial record struct ProductId(Guid Value) {}
from graphql-client.
Interestingly, it works if I use Newtonsoft.Json
but not System.Text.Json
from graphql-client.
Hi, sorry for the late reply...
I do not quite understand why ImmutableConverter was chosen and not the specific one that I registered...
You could try to insert your custom converter at the beginning of the converters list (like here), this had to be done for the ErrorPathConverter
and MapConverter
, too.
from graphql-client.
@rose-a Thanks for the suggestion!
Indeed, it works with the insert
method!
But I still think that it is a bug because annotating the type with
[System.Text.Json.Serialization.JsonConverter(typeof(ProductIdSystemTextJsonConverter))]
doesn't work.
But it does work for the Newtonsoft
serialiser. So, something is still odd here.
from graphql-client.
Yeah, I'd expect that to work, too.
But I don't know how to fine-tune the System.Text.Json serializer for that... PRs welcome ๐
from graphql-client.
@rose-a I may try to find some time to look into it...
As a super quick and easy fix, would you accept this logic?
If the type is marked with JsonConverterAttribute
(there is a converter for this type), ImmutableConverter
should return false
from CanConvert
so that the registered converter can have its turn.
Also, could you please elaborate on the ImmutableConverter
, why is it needed?
from graphql-client.
Also, could you please elaborate on the ImmutableConverter, why is it needed?
If I remember correctly it is needed for deserialization of anonymous types... If you're playing around, you could check what happens if you remove it (some tests should fail)
If the type is marked with JsonConverterAttribute (there is a converter for this type), ImmutableConverter should return false from CanConvert so that the registered converter can have its turn.
Sounds reasonable, although I have no idea on how this will impact performance... @sungam3r @Shane32 do you have an opinion on this?
from graphql-client.
If you're playing around, you could check what happens if you remove it (some tests should fail)
Yeah, that's the thing.
I already checked it out, all the tests still pass if we remove ImmutableConverter
.
I tried commenting out this line
and even removing the whole ImmutableConverter.cs
file, all the tests are happy.
Hence the question: why do we need it?
from graphql-client.
Hm... trying to read up on this, it seems like this might have become obsolete wit .NET 5.0...
from graphql-client.
If so, then it may fix the issue in a nicest way: fixing bugs by removing code :)
from graphql-client.
Related Issues (20)
- Invalid Cast Exception when using Subscriptions HOT 2
- AppSync Subscription error: 'SubProtocolNotSupportedError' HOT 6
- Error in a Mutation Execution of 6.0.1 Nuget Version HOT 2
- 6.0.1 - System.ObjectDisposedException (SendWebSocketMessageAsync) HOT 1
- Getting "System.Net.Http.HttpRequestException: No such host is known" on Windows HOT 1
- Upgrade from 4.0.2 to 6.0.1 results in InitializeWebsocketConnection() error
- Casting Error in GraphQL C# Library HOT 4
- MapConverter throws if extensions property is null
- .NET 8.0 Issue w/ SystemTextJsonSerializer HOT 1
- SendQueryAsync fails unless Uri has a trailing '/' HOT 1
- GraphQL.Client.Example fails with exception
- Subscription disposed but connection remains HOT 4
- first and take not working properly? HOT 2
- How to use Polly with this library? HOT 1
- AppSync's WS connection closing at initialization
- Make it easier to use GraphQLโs constructor with HttpClient and only endpoint
- System.Text.Json.JsonException when parsing response from SendMutationAsync. HOT 1
- Please consider adding [StringSyntax("GraphQL")] attributes HOT 4
- Unused project reference to Newtonsoft.Json in GraphQL.Client.LocalExecution
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql-client.