Mi è stato affidato l'utilizzo di una libreria di accesso ai dati interna che è passata in modo efficace XML a una stored procedure, che restituisce XML. Non c'è nulla che io possa fare al riguardo. Ho provato ad ottenere l'approvazione di ActiveRecord, ma la mia richiesta è stata rifiutata. Tuttavia, usando l'eccellente codice fornito a http://blog.bodurov.com/Post.aspx?postID=27, ho aggiunto un metodo di estensione a IEnumerable che converte le coppie di valori-chiave che ricavo dall'aspetto XML ragged in oggetti fortemente tipizzati, completi di nomi di proprietà!Come si allega un metodo a un tipo C# creato in modo dinamico in fase di runtime?
questo:
dict["keyName1"]
diventa
MyObject.keyName1
Ora l'interfaccia supporta l'associazione dati! Molto carino! Mi piacerebbe fare un ulteriore passo avanti, però. Voglio che gli oggetti emessi abbiano anche i metodi Save(), in modo che io possa scimmiottare il pattern ActiveRecord e fornire ai miei ragazzi del web un livello di oggetto intuitivo da utilizzare da ASP.net.
Come scrivere un metodo in Visual Studio, nel codice sorgente e collegarlo in fase di runtime agli oggetti emessi? Non sono interessato a (o qualificato per) assemblaggio di scrittura o IL. Mi piacerebbe farlo in C#. Questa è la mia prima domanda StackOverflow e la sto postando con IE6 imposto dall'azienda, quindi per favore sii gentile.
"se la struttura XML sarà lo stesso ogni volta che il SP esegue" ottengo BRD 1245 RFW 3456 InstanceName> Nome del progetto! con attributi diversi ogni volta :( –
Sì, ma sono sicuro che c'è un elenco di attributi disponibili tra cui scegliere. Mettere tutti gli attributi nella classe come campi Nullable (se si tratta di tipi di valore) e popola solo quelli che torni. Non penso che tu debba usare una soluzione pazzesca per costruire un tipo in modo dinamico ... – BFree
L'XML è generato dinamicamente e non voglio dover mantenere una libreria di classi concrete per ogni permutazione. –