Skip to content

Investigate Basic Serializer for BaseObjectStorageHelper #3692

@michael-hawker

Description

@michael-hawker

Describe the problem this feature would solve

We noticed an issue with the compiled binary size to drive #3145 when we did PR #3637. While we removed the System.Text.Json dependency, it instead pulled in a larger chunk of system dependencies into the final app binary.

To resolve this, we don't want to provide a default Json based serializer for the toolkit in 7.0. We'll instead provide the short examples of setting up each type of serializer for Newtonsoft.Json, System.Text.Json, and DataContractSerializer so app developers can use whichever they'd like.

However, this leads to a problem of what to do with the SystemInformation class which uses the base storage helper to store the values to track application statistics. @Sergio0694 pointed out that we could still just call the base Settings API calls directly.

Describe the solution

I'd like to investigate what would happen if we provided (at least for SystemInformation) a 'PassthruSerializer' which doesn't do any manipulation of values and just provides them raw. We'd just have to check how this behaves with the existing basic types of bool, long, and string that I believe the current SystemInformation helper uses.

Describe alternatives you've considered

By referencing any Json based serializer we add at least 800kb+ to the final compiled binary from .NET Native, so this can have a large impact on all our packages as many depend on the Microsoft.Toolkit.Uwp package.

Additional context & Screenshots

@RosarioPulella had started this work here, but this would change the contract even more. If we can instead still keep the SystemInformation class encapsulated, it'll be easier to use.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions