{"id":1259,"date":"2026-03-12T08:57:49","date_gmt":"2026-03-12T11:57:49","guid":{"rendered":"https:\/\/maurobernal.com.ar\/blog\/?p=1259"},"modified":"2026-03-12T08:57:49","modified_gmt":"2026-03-12T11:57:49","slug":"csharp-14-15-extension-members-propiedades-estaticos","status":"publish","type":"post","link":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/","title":{"rendered":"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes"},"content":{"rendered":"\n<p class=\"intro-destacado\">Los m\u00e9todos de extensi\u00f3n de C# siempre fueron una de las features que m\u00e1s me gustaron. Pero siempre tuvieron una limitaci\u00f3n molesta: solo pod\u00edas agregar m\u00e9todos, no propiedades. Si quer\u00edas que <code>lista.IsEmpty<\/code> funcionara como propiedad (sin par\u00e9ntesis), no hab\u00eda forma elegante. C# 14 lo soluciona con los bloques de extensi\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El l\u00edmite de los m\u00e9todos de extensi\u00f3n cl\u00e1sicos<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\">\/\/ &#x274c; M\u00e9todos de extensi\u00f3n cl\u00e1sicos: solo m\u00e9todos, sintaxis dispersa\npublic static class EnumerableExtensions\n{\n    \/\/ No hay forma de hacer esto una propiedad \u2014 requiere par\u00e9ntesis\n    public static bool IsEmpty&lt;T&gt;(this IEnumerable&lt;T&gt; source) \n        =&gt; !source.Any();\n\n    public static IEnumerable&lt;T&gt; WhereNot&lt;T&gt;(\n        this IEnumerable&lt;T&gt; source, \n        Func&lt;T, bool&gt; predicate) \n        =&gt; source.Where(x =&gt; !predicate(x));\n}\n\n\/\/ Uso: requiere par\u00e9ntesis aunque sem\u00e1nticamente sea una propiedad\nvar lista = new List&lt;int&gt;();\nbool vacia = lista.IsEmpty();  \/\/ par\u00e9ntesis obligatorios<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Extension members: la nueva sintaxis de bloques<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\">\/\/ &#x2705; C# 14: bloques de extensi\u00f3n con propiedades reales\npublic extension EnumerableExtensions&lt;T&gt;(IEnumerable&lt;T&gt; source)\n{\n    \/\/ Propiedad de extensi\u00f3n: acceso sin par\u00e9ntesis\n    public bool IsEmpty =&gt; !source.Any();\n    \n    public int Count =&gt; source.Count();\n\n    \/\/ M\u00e9todo de extensi\u00f3n en el mismo bloque\n    public IEnumerable&lt;T&gt; WhereNot(Func&lt;T, bool&gt; predicate) \n        =&gt; source.Where(x =&gt; !predicate(x));\n\n    public IEnumerable&lt;T&gt; Shuffle()\n    {\n        var lista = source.ToList();\n        var rng = Random.Shared;\n        for (int i = lista.Count - 1; i &gt; 0; i--)\n        {\n            int j = rng.Next(i + 1);\n            (lista[i], lista[j]) = (lista[j], lista[i]);\n        }\n        return lista;\n    }\n}\n\n\/\/ Uso: propiedades sin par\u00e9ntesis\nvar numeros = new List&lt;int&gt;();\nbool vacia = numeros.IsEmpty;   \/\/ sin par\u00e9ntesis\nint cant   = numeros.Count;     \/\/ sin par\u00e9ntesis\n\nvar pares = Enumerable.Range(1, 10).WhereNot(n =&gt; n % 2 == 0);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Miembros est\u00e1ticos de extensi\u00f3n<\/h2>\n\n\n\n<p>Una de las capacidades nuevas m\u00e1s potentes: agregar m\u00e9todos de f\u00e1brica est\u00e1ticos a tipos que no controlamos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code\">\/\/ Extender DateTime con m\u00e9todos de f\u00e1brica est\u00e1ticos\npublic extension DateTimeExtensions(DateTime _)\n{\n    \/\/ Miembro est\u00e1tico: se llama como DateTime.HoyArgentina()\n    public static DateTime HoyArgentina()\n    {\n        var tz = TimeZoneInfo.FindSystemTimeZoneById(\"Argentina Standard Time\");\n        return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);\n    }\n\n    \/\/ Propiedad de instancia: sin par\u00e9ntesis\n    public bool EsFinDeSemana =&gt; DayOfWeek is DayOfWeek.Saturday or DayOfWeek.Sunday;\n\n    public string FormatoArgentino() =&gt; ToString(\"dd\/MM\/yyyy HH:mm\");\n}\n\n\/\/ Uso\nvar hoy = DateTime.HoyArgentina();      \/\/ m\u00e9todo est\u00e1tico\nbool finde = DateTime.Now.EsFinDeSemana; \/\/ propiedad de instancia\nstring fmt = DateTime.Now.FormatoArgentino(); \/\/ m\u00e9todo de instancia<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Extensiones para tipos del framework que usamos todos los d\u00edas<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\">\/\/ Extensiones \u00fatiles para string\npublic extension StringExtensions(string source)\n{\n    public bool IsNullOrEmpty =&gt; string.IsNullOrEmpty(source);\n    public bool IsNullOrWhiteSpace =&gt; string.IsNullOrWhiteSpace(source);\n    public string Truncar(int maxLength) \n        =&gt; source.Length &lt;= maxLength ? source : source[..maxLength] + \"...\";\n    public string ToCamelCase()\n    {\n        if (source.IsNullOrEmpty) return source;\n        return char.ToLowerInvariant(source[0]) + source[1..];\n    }\n}\n\n\/\/ Extensiones para HttpClient\npublic extension HttpClientExtensions(HttpClient client)\n{\n    public async Task&lt;T?&gt; GetJsonAsync&lt;T&gt;(string url)\n    {\n        var response = await client.GetAsync(url);\n        response.EnsureSuccessStatusCode();\n        return await response.Content.ReadFromJsonAsync&lt;T&gt;();\n    }\n}\n\n\/\/ Uso\nstring nombre = \"MiServicio\";\nConsole.WriteLine(nombre.ToCamelCase());  \/\/ \"miServicio\"\nConsole.WriteLine(nombre.Truncar(5));     \/\/ \"MiSer...\"\n\nvar usuario = await httpClient.GetJsonAsync&lt;Usuario&gt;(\"\/api\/usuarios\/1\");<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Diferencias clave con los m\u00e9todos de extensi\u00f3n cl\u00e1sicos<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Caracter\u00edstica<\/th><th>M\u00e9todos de extensi\u00f3n (cl\u00e1sico)<\/th><th>Extension members (C# 14)<\/th><\/tr><\/thead><tbody>\n<tr><td>M\u00e9todos de instancia<\/td><td>&#x2705;<\/td><td>&#x2705;<\/td><\/tr>\n<tr><td>Propiedades de instancia<\/td><td>&#x274c;<\/td><td>&#x2705;<\/td><\/tr>\n<tr><td>Miembros est\u00e1ticos<\/td><td>&#x274c;<\/td><td>&#x2705;<\/td><\/tr>\n<tr><td>Agrupaci\u00f3n en bloque<\/td><td>&#x274c; (clase est\u00e1tica separada)<\/td><td>&#x2705;<\/td><\/tr>\n<tr><td>Compatibilidad hacia atr\u00e1s<\/td><td>&#x2705; C# 3+<\/td><td>C# 14+ \u00fanicamente<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n<hr class=\"wp-block-separator\"\/>\n<p><em><a href=\"https:\/\/maurobernal.com.ar\/blog\/?p=1258\">\u2190 La palabra clave field en C# 14: adi\u00f3s para siempre a los backing fields repetitivos<\/a> | <strong>Serie .NET 8 \u2192 .NET 10<\/strong> | Pr\u00f3ximo: <a href=\"https:\/\/maurobernal.com.ar\/blog\/?p=1260\">LINQ en .NET 9 y .NET 10: CountBy, AggregateBy, Index() y las mejoras que cambian c\u00f3mo consult\u00e1s datos \u2192<\/a><\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Extension members en C# 14\/15: propiedades de extensi\u00f3n sin par\u00e9ntesis, miembros est\u00e1ticos y agrupaci\u00f3n en bloques. La evoluci\u00f3n natural de los m\u00e9todos de extensi\u00f3n cl\u00e1sicos.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[202],"tags":[211,18,294,303],"class_list":["post-1259","post","type-post","status-publish","format-standard","hentry","category-dotnet","tag-csharp","tag-dotnet","tag-dotnet10","tag-extensions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes &#183; devops Mauro Bernal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes &#183; devops Mauro Bernal\" \/>\n<meta property=\"og:description\" content=\"Extension members en C# 14\/15: propiedades de extensi\u00f3n sin par\u00e9ntesis, miembros est\u00e1ticos y agrupaci\u00f3n en bloques. La evoluci\u00f3n natural de los m\u00e9todos de extensi\u00f3n cl\u00e1sicos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/\" \/>\n<meta property=\"og:site_name\" content=\"devops Mauro Bernal\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-12T11:57:49+00:00\" \/>\n<meta name=\"author\" content=\"Mauro Bernal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:site\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauro Bernal\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/\"},\"author\":{\"name\":\"Mauro Bernal\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"headline\":\"Extension Members en C# 14\\\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes\",\"datePublished\":\"2026-03-12T11:57:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/\"},\"wordCount\":228,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"keywords\":[\"csharp\",\"dotnet\",\"dotnet10\",\"extensions\"],\"articleSection\":[\"DotNet\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/\",\"name\":\"Extension Members en C# 14\\\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes &#183; devops Mauro Bernal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\"},\"datePublished\":\"2026-03-12T11:57:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/csharp-14-15-extension-members-propiedades-estaticos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extension Members en C# 14\\\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\",\"name\":\"devops Mauro Bernal\",\"description\":\"Cuando tu trabajo es hacer que las cosas funcionen bien...\",\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\",\"name\":\"Mauro Bernal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"width\":1740,\"height\":1740,\"caption\":\"Mauro Bernal\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\"},\"description\":\"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman\",\"sameAs\":[\"https:\\\/\\\/maurobernal.com.ar\",\"https:\\\/\\\/x.com\\\/_maurobernal\",\"https:\\\/\\\/youtube.com\\\/maurobernal\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes &#183; devops Mauro Bernal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/","og_locale":"es_ES","og_type":"article","og_title":"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes &#183; devops Mauro Bernal","og_description":"Extension members en C# 14\/15: propiedades de extensi\u00f3n sin par\u00e9ntesis, miembros est\u00e1ticos y agrupaci\u00f3n en bloques. La evoluci\u00f3n natural de los m\u00e9todos de extensi\u00f3n cl\u00e1sicos.","og_url":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/","og_site_name":"devops Mauro Bernal","article_published_time":"2026-03-12T11:57:49+00:00","author":"Mauro Bernal","twitter_card":"summary_large_image","twitter_creator":"@_maurobernal","twitter_site":"@_maurobernal","twitter_misc":{"Escrito por":"Mauro Bernal"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/#article","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/"},"author":{"name":"Mauro Bernal","@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"headline":"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes","datePublished":"2026-03-12T11:57:49+00:00","mainEntityOfPage":{"@id":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/"},"wordCount":228,"commentCount":0,"publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"keywords":["csharp","dotnet","dotnet10","extensions"],"articleSection":["DotNet"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/","url":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/","name":"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes &#183; devops Mauro Bernal","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#website"},"datePublished":"2026-03-12T11:57:49+00:00","breadcrumb":{"@id":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/maurobernal.com.ar\/blog\/csharp-14-15-extension-members-propiedades-estaticos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/maurobernal.com.ar\/blog\/"},{"@type":"ListItem","position":2,"name":"Extension Members en C# 14\/15: propiedades y miembros est\u00e1ticos de extensi\u00f3n como nunca antes"}]},{"@type":"WebSite","@id":"https:\/\/maurobernal.com.ar\/blog\/#website","url":"https:\/\/maurobernal.com.ar\/blog\/","name":"devops Mauro Bernal","description":"Cuando tu trabajo es hacer que las cosas funcionen bien...","publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maurobernal.com.ar\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283","name":"Mauro Bernal","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","url":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","contentUrl":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","width":1740,"height":1740,"caption":"Mauro Bernal"},"logo":{"@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1"},"description":"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman","sameAs":["https:\/\/maurobernal.com.ar","https:\/\/x.com\/_maurobernal","https:\/\/youtube.com\/maurobernal"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/comments?post=1259"}],"version-history":[{"count":1,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1259\/revisions"}],"predecessor-version":[{"id":1268,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1259\/revisions\/1268"}],"wp:attachment":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/media?parent=1259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/categories?post=1259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/tags?post=1259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}