Diciamo che voglio memorizzare la data che non può essere modificata dall'utente nel codice. Ad esempio, la mia applicazione supporta dieci tipi di rapporti e voglio memorizzarne i metadati. Di solito, userei un dizionario costante per questo:
Private Shared ReadOnly ReportConfigurations As New Dictionary(Of Reports, ReportMetadata)() From
{
{Reports.Foo, New ReportMetadata("Foo Report", PaperSize.A4, 8, 12, ...)},
{Reports.Bar, New ReportMetadata("Bar Report", PaperSize.A4, 8, 14, ...)},
...
}
(Ovviamente, utilizzerei Const
se .NET supportava i campi del dizionario costante e userei ImmutableDictionary se non fossi bloccato con una versione precedente del framework.)
Funziona bene, ma diventa difficile leggere velocemente una volta che il numero di campi di metadati aumenta (non puoi vedere a cosa si riferiscono i numeri 8 e 12 a meno che tu non aggiunga parametri con nome e i campi siano allineati bene solo se tu chiama i tuoi rapporti "Foo" e "Bar", che io non conosco). Un'opzione sarebbe quella di usare XML inline e analizzarlo (che è abbastanza semplice se la tua lingua lo supporta ):
Private Shared ReadOnly ReportConfigurations As XElement =
<Reports>
<Report Name="Foo Report" PaperSize="A4"
FontSizePx="8" BarcodeWidthCm="12"
... />
...
</Reports>
ma mi manca la struttura tabulare. Idealmente, avrei qualcosa di simile
ReportName | PaperSize | FontSizePx | BarcodeWidthCm | ...
---------------------------------------------------------------
Foo Report | A4 | 8 | 12 | ...
Bar Report | A4 | 8 | 14 | ...
...
ma aggiungere un foglio di Excel come risorsa al mio progetto e analizzarlo in fase di esecuzione sembra un terribile sovraccarico, solo per un po 'di maggiore leggibilità.
C'è qualche soluzione elegante che mi è sfuggita?
Domanda correlata:
- Memorizzazione dei dati nel codice (Si tratta di dati a due campi, per i quali la soluzione del dizionario o un file di risorse funzionerebbe bene.)