Comments (6)
Hi TMaddox,
Could you please provide detailed examples of the different ways you would like to serialize the same object?
Newtonsoft json contracts have many options and I'm not sure which one you would like to see implemented
from dahomey.cbor.
Sorry for the unclear OP, I'll try to find a small and accurate example
Basically I want to choose at runtime, wether a property or field should be serialized or not.
Consider the following classes:
public class Tree
{
public string Name { get; set; }
public int Age { get; set; }
public Tree() { }
....
}
public class MyContract : CborBaseContract
{
private bool someOtherCondition; // Instanciated in ctor
protected override IList<CborProperty> CreateProperties(Type type)
{
IList<CborProperty> properties = base.CreateProperties(type);
if (typeof(Tree) == type && someOtherCondition)
{
properties.Where(p => p.PropertyName == "Name").ToList();
}
return properties;
}
}
Now I want to do this:
public void MyMethod()
{
CborContract myCustomCborContract = new MyContract();
Cbor.Contract = myCustomCborContract;
var serialized = Cbor.Serialize(new Tree("myTree", 10)) // I know this won't work, just a concept to keep it simple
// serialized should contain the property "Name", but not "Age"
}
from dahomey.cbor.
implemented in https://github.com/dahomey-technologies/Dahomey.Cbor/releases/tag/1.1.0
from dahomey.cbor.
Syntax for your example:
public class Tree
{
public string Name { get; set; }
public int Age { get; set; }
public Tree() { }
....
}
public void MyMethod()
{
CborOptions options = new CborOptions();
options.Registry.ObjectMappingRegistry.Register<Tree>(objectMapping =>
objectMapping
.AutoMap()
.ClearMemberMappings()
.MapMember(o => o.Name)
);
var serialized = Cbor.Serialize(new Tree("myTree", 10), options);
}
from dahomey.cbor.
Thank you very much for implementing all my featue requests! I really appriciate it!
from dahomey.cbor.
You're welcome!
Please let me know if all is working as expected.
from dahomey.cbor.
Related Issues (20)
- Cannot serialize enum in object member HOT 1
- Project status HOT 1
- Security Issues with Polymorphic support in serialization
- How to convert CborValue to standard .NET type? HOT 2
- Storing a DateTime in CborValue/CborObject HOT 2
- Feature Suggestion: Support for reading multiple CBOR objects sequentially from a stream. HOT 3
- Incorrect DateTime wire encoding
- Library is not threadsafe HOT 4
- Reflection HOT 1
- Add support for .NET Framework HOT 1
- Method not found !!0 Dahomey.Cbor.Cbor.Deserialize<!0>(System.ReadOnlySpan`1<byte>,Dahomey.Cbor.CborOptions) HOT 4
- Issue with Xamarin Forms linker and default constructor HOT 4
- Support record classes HOT 2
- Deserialization of abstract record class fails HOT 3
- Feature request: Add and support int key for CborPropertyAttribute HOT 2
- In DateTimeConverter, let DateTime.Kind be unspecified if it is in fact unspecified HOT 2
- Consider letting CborReader.SkipDataItem skip semantic tags HOT 1
- How-to do a Custom ArrayConverter HOT 2
- Consider adding CborWriter.WriteByteString(int) and WriteByteString(ReadOnlySequence<byte>) HOT 3
- Feature request: Add ReadOnlySequence<byte> overload to CborReader
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 dahomey.cbor.