Passaggio di un tipo anonimo a un controllo associato

7

In generale, sono piuttosto contrario all'uso di tipi anonimi nel codice del mondo reale (eccetto LINQ e altri scenari specifici), ma sto guardando in questo momento a una situazione in cui ho bisogno di associare un ASP Controllo GridView con una raccolta di valori di tupla e sembrano piuttosto allettanti.

Fondamentalmente, ho bisogno di mostrare un elenco di account proprietari associati a nomi di computer diversi. Al momento non ho un tipo che contenga queste due proprietà perché non li uso insieme come questo da nessun'altra parte.

Quello che farei normalmente in una situazione come questa è semplicemente creare una nuova classe con le proprietà, impostare ItemType su GridView per fare riferimento a quel tipo, quindi creare oggetti di quel tipo nel mio Select metodo (io uso ObjectDataSource la maggior parte delle volte). Ma ora sto pensando che non c'è davvero alcun vantaggio nel lanciare quella classe extra, dal momento che non importa cosa si stia vincendo attraverso il riflesso.

C'è qualche ragione per evitare l'uso di tipi anonimi in situazioni di associazione dei dati come questa?

Accetterei qualsiasi cosa: prestazioni, leggibilità, manutenibilità, principio o qualsiasi altra cosa tu possa lanciarmi. Ma l'unico svantaggio che mi viene in mente è se volessi usare la proprietà Item per usare Intellisense per il mio data-binding, ma in questo caso particolare non ho alcuna utilità per qualcosa di più di BoundField s. Ovviamente, tutto si basa sul presupposto che funzioni anche, certamente non l'ho ancora provato con i tipi anonimi, quindi potrebbe non essere supportato per un motivo o per l'altro.

    
posta Matthew Haugen 31.07.2014 - 23:57
fonte

2 risposte

1

No

E anche la tua ipotesi sul fatto che non venga tipizzata staticamente è sbagliata.

Da la documentazione :

Anonymous types are class types that derive directly from object, and that cannot be cast to any type except object. The compiler provides a name for each anonymous type, although your application cannot access it. From the perspective of the common language runtime, an anonymous type is no different from any other reference type.

    
risposta data 07.10.2015 - 01:40
fonte
0

Spesso leggo un GridView a un System.Data.DataTable che è stato riempito da una stored procedure. Rendo che i campi nella stored procedure corrispondano ai nomi dei campi in GridView. Un altro modo, quando si utilizza il framework linq e entitiy con tipi anonimi, è di associare il risultato di linq direttamente alla proprietà DataSource di GridView allo stesso modo di un DataTable. Questa domanda mostra un esempio utilizzando linq e ecco un esempio utilizzando un DataTable. Personalmente ritengo che l'utilizzo di tipi anonimi sia preferibile all'utilizzo di un DataTable perché i dati nel DataTable sono archiviati come Object e il tipo anonimo è un tipo di dati strong. La decisione di utilizzare DataTables vs Linq e i tipi anonimi spesso dipende da come si sente il supervisore riguardo Linq e Entity Framework.

    
risposta data 06.10.2015 - 16:27
fonte

Leggi altre domande sui tag