Assegna la stringa letterale come proprietà di un oggetto dinamico durante il runtime e accederlo

StackOverflow https://stackoverflow.com/questions/9438090

Domanda

Come posso assegnare il fieldname di un SQLDataReader durante il runtime dinamicamente a un oggetto dinamico?

Consente di assumere di aver letto il nome di campo di un SQLDataReader in una variabile:

string sqlDataReaderFieldNameStringVariable  = reader.GetName(index);
.

Non posso dire:

dynamic dyn = new ExpandoObject();
dyn.sqlDataReaderFieldNameStringVariable = "test";
.

Come posso farlo?

Aggiornamento:

ancora tempo per ottenere un punto ;-) Aggiungo il mio oggetto Dyn a un elenco di tipo ExpandoObject che è il valore di ritorno di un metodo.Quando accedo all'elenco tramite dati [0] ..Test proprietà non esiste durante la compilazione TIME ???

Quando lo faccio al di fuori del metodo che restituisce l'elenco:

dynamic bla = (ExpandoObject)data[0];
            String shit = bla.Name;
.

Perché devo gettarlo?Qualsiasi soluzione alternativa?Grazie Jon.

È stato utile?

Soluzione

Devi lanciare il ExpandoObject dyn a IDictionary<string, object> prima a farlo:

dynamic dyn = new ExpandoObject();
var dynDict = dyn as IDictionary<string, object>;
dynDict[sqlDataReaderFieldNameStringVariable] = "test";   
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top