public static void Main(string[] args) { dynamic din = new Dynamic(); //precisa ser dynamic para o compilador não reclamar dos membros dinâmicos din.Nome = "Walla"; //criando membros dinamicamente din.Sobrenome = "C#"; din.Action = new Action(() => WriteLine("Action Existe")); //isto não era necessário din.Print(); //chama um método existente na classe din.Action(); //chama o método que acabou de ser criado din.Clear(); //chama um método disponível no dicionário interno, mas que não está definido na classe din.Print(); //tá limpo din.NaoExiste(); //este método não existe dynamic exp = new ExpandoObject(); exp.Action = new Action(() => WriteLine("Expando")); //só para mostrar que é possível fazer de forma automática, mas precisaria pesquisar exp.Action(); }