У меня была следующая проблема сегодня, и мне было интересно, есть ли решение для моей проблемы.
Моя идея заключалась в том, чтобы создавать анонимные классы и использовать их в качестве источника данных для 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");
}
Это прекрасно работает до сих пор.
Проблема, с которой я столкнулась, состоит в том, чтобы вывести Id из свойства "Current" для BindingSource, потому что я не могу вернуть его обратно в анонимный тип:
private void cmdOK_Click(object sender, EventArgs e)
{
    var option = (???)bsOptions.Current;
}
Я думаю, что нет способа узнать тип "Текущий" и получить доступ к свойству "Идентификатор"? Может быть, у кого-то есть хорошее решение...
Я знаю, что есть другие (а также лучшие) способы получить Id (Reflection, чтение значения из ComboBox, не используя анонимные tpyes,...) Я просто любезен, если можно получить Type bsOptions.Current элегантным способом.
