Ho avuto il seguente problema oggi e mi chiedevo se esiste una soluzione per il mio problema.Trasmissione a tipo anonimo
La mia idea era quella di costruire classi anonime e usarlo come un DataSource per una 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");
}
che funziona bene finora.
Il problema che ho avuto è quello di ottenere Id fuori della proprietà "corrente" del BindingSource, perché non riesco a lanciare di nuovo al tipo anonimo:
private void cmdOK_Click(object sender, EventArgs e)
{
var option = (???)bsOptions.Current;
}
Credo che non v'è alcun modo per scoprire il tipo di "Corrente" e accedere alla proprietà "Id"? Forse qualcuno ha una buona soluzione ...
So che ci sono altri (e anche migliori) modi per ottenere l'Id (Riflessione, leggere il valore dal ComboBox, non usare tpyes anonimi, ...) I ' Sono solo cortese se è possibile ottenere il Tipo da bsOptions.Current in modo elegante.
Br ... classe anonima può essere utile (a volte), ma in realtà, utilizzato in questo modo, per me è una regressione all'età VB: /. –
Attendi solo che la dinamica entri in scena, sii contento che stiamo vedendo solo domande sul passaggio di oggetti anonimi. –
Giusto, con abbastanza fortuna avremo un nuovo attributo "marquee" sull'etichetta: D –