Created by Thiago Russo
over 7 years ago
|
||
Question | Answer |
o q é e como funciona dynamic? Qdo é útil trabalhar com dynamic? O que o compilador faz com o obj dinamico que vc escreve? | C# é uma linguagem tipada parcialmente estática. A palavra-chave dynamic, add no C# 4.0, é onde vc entra no mundo das linguagens fracamente tipadas. Trabalhar c/ sistema fracamente tipado é útil ao se comunicar c/ recursos externos (Ex: COM Interop, Iron-Python, conjuntos de resultados (JSON) , ou o documento HTML Object Model [DOM]) ou qdo trabalham com reflection dentro C#. Qdo o compilador C# encontra 'dynamic' ele pára c/ verificação estática de tipo (ex: verificar se existe um método em um tipo ou se tem certos argumentos). Em vez disso, o compilador salva o objetivo do código para que ele possa ser executado mais tarde em tempo de execução. É por isso q o uso de tipos dinâmicos n irão gerar quaisquer erros em tempo de compilação, embora certamente pode gerar erros de execução. |
exemplo com Office automation API's |
Image:
Dynamic (image/png)
|
DynamicObject conceito | DynamicObject é o + flexível. Qdo herdando de DynamicObject, vc pode substituir os membros q lhe permitem substituir operações como get and set de um membro, chamar um método, ou realizar conversões. Usando DynamicObject, vc pode criar objetos verdadeiramente dinâmicos e tem total controle sobre como eles operam em tempo de execução. |
exemplo de DynamicObject |
Image:
Dynamic Object (image/png)
|
ExpandoObject conceito | ExpandoObject é uma implementação selada q permite obter e definir propriedades em um tipo. Em ASP.NET MVC, por exemplo, há uma ViewBag q pode ser usado p/ passar dados do controller para a view. ViewBag é um ExpandoObject. Em vez de criar uma nova propriedade, tipagem estática para cada elemento de dados que vc deseja passar, vc pode usar o ViewBag, |
exemplo de ExpandoObject | public ActionResult Index() { ViewBag.MyDynamicValue = “This property is not statically typed”; return View(); } |
Want to create your own Flashcards for free with GoConqr? Learn more.