using System.Collections.Generic;
public static void Main() {
var valid = @"<cfg name='valid configuration'>
<add name='output' provider='MySql' />
var invalid = @"<cfg name='invalid configuration'>
<add name='input' provider='oracle' />
Console.WriteLine("There are {0} errors in the {1}.", cfg.Errors().Length, cfg.Name);
foreach(var connection in cfg.Connections){
Console.WriteLine("Connection {0} is provided by {1}.", connection.Name, connection.Provider);
Console.WriteLine("There are {0} errors in the {1}.", cfg.Errors().Length, cfg.Name);
foreach(var error in cfg.Errors()){
Console.WriteLine(error);
public string Name {get; set;}
public List<Connection> Connections {get; set;}
class Connection : CfgNode {
public string Name {get; set;}
[Cfg(value="sqlserver", domain="sqlserver,mysql,sqlite,postgresql", ignoreCase=true)]
public string Provider {get; set;}