Table of Contents

Class YamlFormatterOptionsExtensions

Namespace
Codebelt.Extensions.YamlDotNet.Formatters
Assembly
Codebelt.Extensions.YamlDotNet.dll

Extension methods for the YamlFormatterOptions class.

public static class YamlFormatterOptionsExtensions
Inheritance
YamlFormatterOptionsExtensions

Examples

The following example demonstrates how to use the SetPropertyName extension method to apply naming convention transformations when building YAML output.

using System;
using System.IO;
using Codebelt.Extensions.YamlDotNet;
using Codebelt.Extensions.YamlDotNet.Formatters;
using YamlDotNet.Core;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;

namespace ExampleNamespace;

class Program
{
    static void Main()
    {
        // Create formatter options with camelCase naming convention
        var options = new YamlFormatterOptions
        {
            Settings = new YamlSerializerOptions
            {
                NamingConvention = CamelCaseNamingConvention.Instance
            }
        };
        
        // Manually create a YAML converter that uses the naming convention
        var converter = YamlConverterFactory.Create<PersonProfile>(
            writer: (emitter, person, formatter) =>
            {
                emitter.WriteStartObject();
                
                // Apply naming convention to property names
                emitter.WritePropertyName(options.SetPropertyName("FirstName"));
                emitter.WriteValue(person.FirstName);
                
                emitter.WritePropertyName(options.SetPropertyName("LastName"));
                emitter.WriteValue(person.LastName);
                
                emitter.WritePropertyName(options.SetPropertyName("EmailAddress"));
                emitter.WriteValue(person.EmailAddress);
                
                emitter.WriteEndObject();
            }
        );
        
        // Add converter to options
        options.Settings.Converters.Add(converter);
        
        // Use formatter to serialize
        var formatter = new Codebelt.Extensions.YamlDotNet.Formatters.YamlFormatter(options);
        var person = new PersonProfile 
        { 
            FirstName = "Jane", 
            LastName = "Smith", 
            EmailAddress = "jane@example.com" 
        };
        
        var yaml = formatter.Serialize(person, typeof(PersonProfile));
        using (var reader = new StreamReader(yaml))
        {
            Console.WriteLine(reader.ReadToEnd());
        }
        // Output will use camelCase:
        // firstName: Jane
        // lastName: Smith
        // emailAddress: jane@example.com
    }
}

public class PersonProfile
{
    public required string FirstName { get; set; }
    public required string LastName { get; set; }
    public required string EmailAddress { get; set; }
}

Methods

SetPropertyName(YamlFormatterOptions, string)

Returns the specified name adhering to the underlying NamingConvention policy on options.

public static string SetPropertyName(this YamlFormatterOptions options, string name)

Parameters

options YamlFormatterOptions

The YamlFormatterOptions to extend.

name string

The name of the property.

Returns

string

If options. is null, the specified name is returned unaltered; otherwise it is converted according to the NamingConvention.