Umwandlung in anonymen Typ

Ich hatte heute das folgende Problem und habe mich gefragt, ob es eine Lösung für mein Problem gibt.

Meine Idee war es, anonyme Klassen zu erstellen und diese als Datenquelle für eine WinForm BindingSource zu verwenden:

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");
}

Das funktioniert soweit gut.

Das Problem, das ich hatte, ist, die ID aus der "Current" -Eigenschaft der BindingSource zu entfernen, da ich sie nicht auf den anonymen Typ zurücksetzen kann:

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

Ich vermute, es gibt keine Möglichkeit, den Typ von "Current" zu ermitteln und auf die Eigenschaft "Id" zuzugreifen. Vielleicht hat jemand eine gute Lösung ...

Ich weiß, dass es andere (und auch bessere) Möglichkeiten gibt, die ID zu ermitteln (Reflection, Lesen des Werts aus der ComboBox, keine anonymen tpyes verwenden, ...). Ich bin nur gespannt, ob es möglich ist, den Typ aus bsOptions herauszuholen. Auf elegante Weise aktuell.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage