Sto cercando un modo per aggiungere membri dinamicamente a un oggetto dinamico. OK, credo che sia necessario un piccolo chiarimento ...Aggiunta dinamica di membri a un oggetto dinamico
Quando lo fate:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
La proprietà Bar
saranno aggiunti in modo dinamico in fase di esecuzione. Ma il codice si riferisce ancora "staticamente" a Bar (il nome "Bar" è hardcoded) ... E se volessi aggiungere una proprietà in runtime senza conoscerne il nome in fase di compilazione?
so come fare questo con un oggetto dinamico personalizzato (in realtà ho blogged about it qualche mese fa), utilizzando i metodi della classe DynamicObject
, ma come posso farlo con qualsiasi oggetto dinamico?
Probabilmente potrei usare l'interfaccia IDynamicMetaObjectProvider
, ma non capisco come usarlo. Ad esempio, quale argomento dovrei passare al metodo GetMetaObject
? (si aspetta un Expression
)
E a proposito, come si esegue la riflessione sugli oggetti dinamici? Riflessione "normale" e TypeDescriptor
non mostrare i membri dinamici ...
Qualsiasi intuizione sarebbe apprezzata!
In C# 6.0, * potrebbe essere * puoi scriverlo come 'foo. $ Bar = 42;' :) Non sono sicuro se è consentito per dinamici ... – nawfal
@nawfal, in realtà, quella funzione è stata abbandonata .. ma comunque, 'foo. $ Bar' è solo una scorciatoia per' foo ["Bar"] ' –
Thomas, non sapevo che la funzione sarebbe stata lasciata cadere (sono contento a riguardo), ma oh sì, per un momento Ho trascurato il vero requisito del tuo q. – nawfal