-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
Milestone
Description
Description
The pull request #34675 added support for private setters. And the default value for IgnoreReadOnlyProperties is false. So I would have assumed something like: [JsonInclude] public ObservableCollection<int> MyInt { get; } = new ObservableCollection<int>(); would work but it does not. It still requires the private set; to explicit written.
Configuration
- .NET Core 5.0 (5.0.100-preview.5.20279.10)
Other information
class Program
{
public static JsonSerializerOptions Options => new JsonSerializerOptions {IgnoreReadOnlyProperties = false};
static void Main(string[] args)
{
var readonlySetter = new MyClass_Readonly();
readonlySetter.MyInt.Add(1);
var readonlyJson = JsonSerializer.Serialize(readonlySetter);
Console.WriteLine("Readonly JSON: " + readonlyJson);
var newReadonlySetter = JsonSerializer.Deserialize<MyClass_Readonly>(readonlyJson);
Console.WriteLine("Readonly List Count: " + newReadonlySetter.MyInt.Count);
var privateSetter = new MyClass_PrivateSetter();
privateSetter.MyInt.Add(1);
var privateJson = JsonSerializer.Serialize(privateSetter);
Console.WriteLine("Private JSON: " + privateJson);
var newPrivateSetter = JsonSerializer.Deserialize<MyClass_PrivateSetter>(privateJson);
Console.WriteLine("Private List Count: " + newPrivateSetter.MyInt.Count);
}
}
class MyClass_Readonly
{
[JsonInclude] public ObservableCollection<int> MyInt { get; } = new ObservableCollection<int>();
}
class MyClass_PrivateSetter
{
[JsonInclude] public ObservableCollection<int> MyInt { get; private set; } = new ObservableCollection<int>();
}
Output:
Readonly JSON: {"MyInt":[1]}
Readonly List Count: 0
Private JSON: {"MyInt":[1]}
Private List Count: 1