Tuve el siguiente problema hoy, y me preguntaba si hay una solución para mi problema.Transmitido a tipo anónimo
Mi idea era construir clases anónimas y utilizarlo como una fuente de datos para un 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");
}
que funciona muy bien hasta ahora.
El problema que tuve es conseguir Id de la propiedad "actual" de la BindingSource, porque no puedo echarlo de nuevo al tipo anónimo:
private void cmdOK_Click(object sender, EventArgs e)
{
var option = (???)bsOptions.Current;
}
supongo que no hay manera de averiguar el tipo de "Actual" y acceder a la propiedad "Id"? Tal vez alguien tiene una buena solución ...
Sé que hay otros (y también mejor) maneras de obtener el Id (reflexión, la lectura del valor del desplegable, no usar tpyes anónimos, ...) I' Es muy curioso si es posible sacar el Tipo de bsOptions.Current de una manera elegante.
Br ... clase anónima puede ser útil (a veces), pero en realidad, se utiliza de esa manera, para mí es una regresión a la edad de VB: /. –
Simplemente espere hasta que la dinámica entre en escena, alégrese de que solo estamos viendo preguntas sobre cómo pasar objetos anónimos. –
Correcto, con suficiente suerte, tendremos un nuevo atributo de "marquesina" en la etiqueta: D –