Transmitir para o tipo anônimo

Eu tive o seguinte problema hoje e fiquei me perguntando se existe uma solução para o meu problema.

Minha idéia era criar classes anônimas e usá-lo como fonte de dados para um WinForm BindingSource:

public void Init()
{
    var option1 = new
                  {
                      Id = TemplateAction.Update,
                      Option = "Update the Templates",
                      Description = "Bla bla 1."
                  };

    var option2 = new
                  {
                      Id = TemplateAction.Download,
                      Option = "Download the Templates",
                      Description = "Bla bla 2."
                  };

    var list = new[] {option1, option2}.ToList();

    bsOptions.DataSource = list; // my BindingSource

    // cboTemplates is a ComboBox
    cboTemplates.DataSource = bsOptions; 
    cboTemplates.ValueMember = "Id";
    cboTemplates.DisplayMember = "Option";

    lblInfoTemplates.DataBindings.Add("Text", bsOptions, "Description");
}

Isso funciona bem até agora.

O problema que tive foi tirar o ID da propriedade "Current" do BindingSource, porque não posso converter de volta para o tipo anônimo:

private void cmdOK_Click(object sender, EventArgs e)
{
    var option = (???)bsOptions.Current;
}

Eu acho que não há maneira de descobrir o tipo de "atual" e acessar a propriedade "Id"? Talvez alguém tenha uma boa solução ...

Eu sei que existem outras (e também melhores) maneiras de obter o Id (Reflection, lendo o valor do ComboBox, não usando tpyes anônimos, ...) Eu apenas sou courious se é possível obter o Type de bsOptions. Corrente de uma maneira elegante.