Rzuć na anonimowy typ

Miałem dziś następujący problem i zastanawiałem się, czy istnieje rozwiązanie mojego problemu.

Moim pomysłem było zbudowanie anonimowych klas i wykorzystanie ich jako źródła danych dla 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");
}

Jak dotąd to działa dobrze.

Problem, jaki miałem, polega na usunięciu Id z właściwości „Current” BindingSource, ponieważ nie mogę go odrzucić do typu anonimowego:

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

Domyślam się, że nie ma sposobu na znalezienie typu „Bieżącego” i dostęp do właściwości „Id”? Może ktoś ma dobre rozwiązanie ...

Wiem, że istnieją inne (i lepsze) sposoby na uzyskanie Id (Reflection, czytanie wartości z ComboBox, nie używanie anonimowych tpyes, ...) Jestem po prostu zabawny, jeśli możliwe jest uzyskanie Type z bsOptions. Prąd w elegancki sposób.

questionAnswers(7)

yourAnswerToTheQuestion