猿问

转换为匿名类型

我今天遇到以下问题,我想知道我的问题是否有解决方案。


我的想法是建立匿名类,并将其用作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");

}

到目前为止,一切正常。


我遇到的问题是要从BindingSource的“当前”属性中获取ID,因为我无法将其强制转换回匿名类型:


private void cmdOK_Click(object sender, EventArgs e)

{

    var option = (???)bsOptions.Current;

}

我想没有办法找出“当前”类型并访问“ Id”属性?也许有人有一个好的解决方案...


我知道还有其他(也是更好的)获取ID的方法(反射,从ComboBox读取值,不使用匿名tpyes,...)我只是好奇是否有可能从bsOptions中获取Type。电流优雅。


胡子哥哥
浏览 395回答 3
3回答
随时随地看视频慕课网APP
我要回答