Giter Site home page Giter Site logo

Comments (5)

axunonb avatar axunonb commented on June 12, 2024

Please provide a working code sample as we can't reproduce this behavior.
See #174 for a working example regarding serialization.

from yaxlib.

Nikey646 avatar Nikey646 commented on June 12, 2024

A .Net Fiddle that shows the result as well.

The first result is kind of as expected.

The second result however, I'm not sure if I'm using the Serializer.Options incorrectly, but it shouldn't be appearing from my understanding?

Expected output for the second one should be

<MyObj>
</MyObj>

or

<MyObj />

from yaxlib.

Nikey646 avatar Nikey646 commented on June 12, 2024

Please provide a working code sample as we can't reproduce this behavior. See #174 for a working example regarding serialization.

Upon comparing the difference between the code I was using and the code provided in #174, setting the serializer.Options.SerializationOptions after the creation of the serializer while allowed (Has a public setter), it's not respected.

When creating a new SerializerOptions in the constructor, it works as expected.

from yaxlib.

Nikey646 avatar Nikey646 commented on June 12, 2024

Changing the SerializerOptions after creating the instance of YAXSerializer has no effect. This, however, will work:

[Test]
public void DontSerializeNullObjects_Test()
{
    var serializer = new YAXSerializer(typeof(MyObj), new SerializerOptions {SerializationOptions = YAXSerializationOptions.DontSerializeNullObjects });
    //serializer.Options.SerializationOptions = YAXSerializationOptions.DontSerializeNullObjects;

    var empty = new MyObj { MyValue = "" };
    var nullVal = new MyObj { MyValue = null };

    var emptyRes = serializer.Serialize(empty);
    var nullRes = serializer.Serialize(nullVal);

    emptyRes.Should().Contain("MyValue");
    nullRes.Should().NotContain("MyValue");
}

That`s why we're asking for a working code sample ;-)

I didn't realize that it would have been because applying the settings after creating the serializer would be the issue, hence why I didn't provide a code example.

In 4.x, or even potentially risking a breaking change in 3.x, and making the setters private for those? And only accepting the values from the constructor, with all arguments being optional?

from yaxlib.

axunonb avatar axunonb commented on June 12, 2024

Changing the SerializerOptions after creating the instance of YAXSerializer has no effect.
This, however, will work:

[Test]
public void DontSerializeNullObjects_Test()
{
    var serializer = new YAXSerializer(typeof(MyObj), new SerializerOptions {SerializationOptions = YAXSerializationOptions.DontSerializeNullObjects });
    //serializer.Options.SerializationOptions = YAXSerializationOptions.DontSerializeNullObjects;

    var empty = new MyObj { MyValue = "" };
    var nullVal = new MyObj { MyValue = null };

    var emptyRes = serializer.Serialize(empty);
    var nullRes = serializer.Serialize(nullVal);

    emptyRes.Should().Contain("MyValue");
    nullRes.Should().NotContain("MyValue");
}

That`s why we're asking for a working code sample ;-)

from yaxlib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.