Existe, por exemplo, a propriedade ViewBag da ControllerBase
classe e podemos obter / definir valores dinamicamente e adicionar qualquer número de campos ou propriedades adicionais a esse objeto, o que é legal. Quero usar algo assim, além do aplicativo MVC e da Controller
classe em outros tipos de aplicações. Quando tentei criar um objeto dinâmico e definir sua propriedade, como abaixo:
1. dynamic MyDynamic = new { A="a" };
2. MyDynamic.A = "asd";
3. Console.WriteLine(MyDynamic.A);
Eu recebi RuntimeBinderException
a mensagem Property ou indexer '<> f__AnonymousType0.A' não pode ser atribuído a - ele é lido apenas na linha 2. Também sugiro que não é exatamente o que estou procurando. Talvez haja alguma classe que possa me permitir fazer algo como:
??? MyDynamic = new ???();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = DateTime.Now;
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
com propriedades dinâmicas de adição e configuração.
Recentemente, tive a necessidade de dar um passo adiante, que era fazer com que as adições de propriedades no objeto dinâmico fossem dinâmicas, com base nas entradas definidas pelo usuário. Os exemplos aqui, e da documentação do ExpandoObject da Microsoft , não abordam especificamente a adição dinâmica de propriedades, mas podem ser deduzidos de como você enumera e exclui propriedades. De qualquer forma, achei que isso poderia ser útil para alguém. Aqui está uma versão extremamente simplificada de como adicionar propriedades verdadeiramente dinâmicas a um ExpandoObject (ignorando palavras-chave e outras formas de manipulação):
fonte
ExpandoObject
é o que você está procurando.fonte
Você pode usar o
ExpandoObject Class
que está noSystem.Dynamic
espaço para nome.Mais informações podem ser encontradas no ExpandoObject MSDN
fonte
fonte
fonte
Ou o valor está presente
fonte