using System.Collections.Generic;
using Maroontress.Oxbind;
public sealed class Program
public static void Main()
<director name='James Cameron'/>
<cast>Sam Worthington</cast>
var reader = new StringReader(xml);
var factory = new OxbinderFactory();
var binder = factory.Of<Movie>();
var movie = binder.NewInstance(reader);
Console.WriteLine($"movie: {movie.Title}");
Console.WriteLine($"director : {movie.TheDirector.Name}");
Console.WriteLine($"year: {movie.MaybeRelease?.Year}");
foreach (var cast in movie.Casts)
Console.WriteLine("cast: " + cast.Name);
public record class Movie(
[ForAttribute("title")] string? Title,
[Required] Director TheDirector,
[Optional] Release? MaybeRelease,
[Multiple] IEnumerable<Cast> Casts);
public record class Director([ForAttribute("name")] string? Name);
public record class Release([ForAttribute("year")] string? Year);
public record class Cast([ForText] string Name);