{"id":1107,"date":"2021-03-11T15:24:58","date_gmt":"2021-03-11T15:24:58","guid":{"rendered":"https:\/\/www.mainmind.com\/blog\/?p=1107"},"modified":"2021-12-30T13:07:33","modified_gmt":"2021-12-30T13:07:33","slug":"tip-hashtable-to-object","status":"publish","type":"post","link":"https:\/\/www.mainmind.com\/blog\/tip-hashtable-to-object\/","title":{"rendered":"TIP: Hashtable to Object"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Si bien existen <a rel=\"noreferrer noopener\" href=\"https:\/\/automapper.org\/\" data-type=\"URL\" data-id=\"https:\/\/automapper.org\/\" target=\"_blank\">librerias completas para asignar propiedades entre objetos<\/a>, tambi\u00e9n es posible asignar de manera autom\u00e1tica nuevos valores en pocas l\u00edneas de forma recursiva. En este caso se trata de asignar nuevos valores editados en un objeto que, por ejemplo, podremos utilizar para guardar los cambios dentro de Entity Framework. Un escenario com\u00fan en un Grid:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nusing System.Data;\nusing System.Linq;\nusing System.Reflection;\n...\n\nHashtable nuevosValores;\n...\n\nlong idBuscado = long.Parse(nuevosValores&#x5B;&quot;id&quot;].ToString());\nCoches n = miEntidad.Coches.Where(x =&gt; x.id == idBuscado).FirstOrDefault();\n\nforeach (PropertyInfo p in n.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))\n{\n    \/\/ Puede tener propiedades el objecto de la entidad que no se utilizan\n    \/\/ por ejemplo la relaci\u00f3n con otra tabla tambien aparece listada\n    if (nuevosValores.ContainsKey(p.Name))\n        p.SetValue(n, nuevosValores&#x5B;p.Name]);\n}\n\nmiEntidad.SaveChanges();\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo sencillo del <a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/programming-guide\/concepts\/reflection\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/programming-guide\/concepts\/reflection\" target=\"_blank\" rel=\"noreferrer noopener\">uso de la reflexi\u00f3n<\/a> en los objectos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si bien existen librerias completas para asignar propiedades entre objetos, tambi\u00e9n es posible asignar de manera autom\u00e1tica nuevos valores en pocas l\u00edneas de forma recursiva. En este caso se trata de asignar nuevos valores editados en un objeto que, por ejemplo, podremos utilizar para guardar los cambios dentro de Entity Framework. Un escenario com\u00fan en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1413,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[67,724,722,79,723,725],"class_list":["post-1107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio","tag-c","tag-entity-framework","tag-hashtable","tag-linq","tag-system-reflection","tag-tip"],"_links":{"self":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/comments?post=1107"}],"version-history":[{"count":0,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1107\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media\/1413"}],"wp:attachment":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media?parent=1107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/categories?post=1107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/tags?post=1107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}