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
optionsYamlFormatterOptionsThe YamlFormatterOptions to extend.
namestringThe name of the property.
Returns
- string
If
options. is null, the specifiednameis returned unaltered; otherwise it is converted according to the NamingConvention.