{"id":15,"date":"2023-09-17T17:49:22","date_gmt":"2023-09-17T20:49:22","guid":{"rendered":"https:\/\/dotnetdicas.com.br\/?p=15"},"modified":"2023-12-10T12:59:46","modified_gmt":"2023-12-10T15:59:46","slug":"atributos-especiais-de-informacoes","status":"publish","type":"post","link":"https:\/\/dotnetdicas.com.br\/?p=15","title":{"rendered":"Atributos Especiais de Informa\u00e7\u00f5es"},"content":{"rendered":"<p><span style=\"font-family: verdana, geneva, sans-serif;\">Ol\u00e1, Devs! Primeiramente, quero dizer que hoje vou compartilhar uma dica daquelas e trata-se dos atributos especiais do C#!!!<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Pois bem, voc\u00ea sabia que no C# temos alguns atributos especiais que s\u00e3o poderosos quando queremos obter informa\u00e7\u00f5es sobre quem chamou determinado m\u00e9todo? Isso mesmo! Estou falando dos atributos <em><strong>CallerMemberName<\/strong><\/em>, <em><strong>CallerFilePath<\/strong><\/em> e <em><strong>CallerLineNumber<\/strong><\/em>.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Al\u00e9m disso, eles s\u00e3o muito \u00fateis para cen\u00e1rios de rastreamento, depura\u00e7\u00e3o e gera\u00e7\u00e3o de logs.<\/span><\/p>\n<h3><span style=\"font-size: 12pt;\"><span style=\"font-family: verdana, geneva, sans-serif;\">1. Ent\u00e3o, vamos l\u00e1! Vem comigo que eu te explico:<\/span><\/span><\/h3>\n<p><strong><span style=\"font-family: verdana, geneva, sans-serif;\">&#8211; CallerMemberName<\/span><\/strong><br \/>\n<span style=\"font-family: verdana, geneva, sans-serif;\">Primeiramente, sabe quando voc\u00ea quer saber o nome daquele m\u00e9todo que chamou o seu? Pois \u00e9, esse atributo te d\u00e1 essa resposta!<\/span><\/p>\n<p><strong><span style=\"font-family: verdana, geneva, sans-serif;\">&#8211; CallerFilePath<\/span><\/strong><br \/>\n<span style=\"font-family: verdana, geneva, sans-serif;\">Por outro lado, esse aqui \u00e9 para os detalhistas! Ele te diz o caminho exato, a localiza\u00e7\u00e3o precisa do arquivo de origem que fez a chamada.<\/span><\/p>\n<p><strong><span style=\"font-family: verdana, geneva, sans-serif;\">&#8211; CallerLineNumber<\/span><\/strong><br \/>\n<span style=\"font-family: verdana, geneva, sans-serif;\">Agora, imagine se eu te dissesse que h\u00e1 um jeito de saber a linha espec\u00edfica no arquivo onde o chamador fez aquela liga\u00e7\u00e3o para o m\u00e9todo? \u00c9 isso que esse atributo faz!<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">O exemplo abaixo mostra isso, ou seja, o nome do chamador, o path do arquivo e o n\u00famero da linha sendo gerados, pois passamos como par\u00e2metros do m\u00e9todo TraceMessage os atributos CallerMemberName, CallerFilePath e CallerLineNumber.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-16 \" src=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-300x198.jpg\" alt=\"Atributos Especiais\" width=\"734\" height=\"484\" srcset=\"https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-300x198.jpg 300w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-1024x675.jpg 1024w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-768x506.jpg 768w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-1536x1012.jpg 1536w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp.jpg 1639w\" sizes=\"(max-width: 734px) 100vw, 734px\" \/><\/p>\n<h3><\/h3>\n<h3><span style=\"font-family: verdana, geneva, sans-serif; font-size: 12pt;\">2. Seguindo em frente, vamos decifrar o c\u00f3digo juntos?<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">1. Temos dois m\u00e9todos: <strong>DoProcessing<\/strong> e <strong>TraceMessage<\/strong>.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">2. O primeiro, <strong>DoProcessing<\/strong>, liga para o <strong>TraceMessage<\/strong> s\u00f3 para dizer: &#8220;<em>An error happened<\/em>&#8220;.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">3. O <strong>TraceMessage<\/strong> \u00e9 o nosso detetive. Via par\u00e2metros ele est\u00e1 preparado n\u00e3o s\u00f3 para ouvir a mensagem, mas tamb\u00e9m para pegar tr\u00eas informa\u00e7\u00f5es muito importantes que s\u00e3o: <em>CallerMemberName<\/em>, <em>CallerFilePath<\/em> e <em>CallerLineNumber<\/em> que pega o nome do m\u00e9todo ou propriedade chamador, obt\u00e9m o caminho completo do arquivo de origem do chamador e o n\u00famero da linha do ponto onde o m\u00e9todo foi chamado respectivamente.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">E sabe o melhor? O C# faz isso automaticamente pra gente!<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">4. Finalmente, <strong>TraceMessage<\/strong> conta tudo o que descobriu usando o bom e velho <strong>Console.WriteLine<\/strong>.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Agora, um segredo entre n\u00f3s: N\u00e3o precisa se preocupar em fornecer esses detalhes ao chamar o m\u00e9todo. \u00c9 m\u00e1gico! O pr\u00f3prio compilador cuida disso pra voc\u00ea.\u00a0<\/span><span style=\"font-family: verdana, geneva, sans-serif;\">E fique tranquilo quanto \u00e0 performance, porque isso acontece no momento da compila\u00e7\u00e3o, n\u00e3o quando seu c\u00f3digo est\u00e1 rodando.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Portanto, meu conselho? Use e abuse desses atributos, especialmente quando estiver registrando informa\u00e7\u00f5es. Eles te ajudam a saber exatamente de onde veio aquela mensagem ou erro, sem ter que fazer malabarismo pra descobrir.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">E a\u00ed, o que acharam? Est\u00e3o prontos para mergulhar ainda mais fundo no universo do C#?<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1, Devs! Primeiramente, quero dizer que hoje vou compartilhar uma dica daquelas e trata-se dos atributos especiais do C#!!! Pois bem, voc\u00ea sabia que no C# temos alguns atributos especiais que s\u00e3o poderosos quando queremos obter informa\u00e7\u00f5es sobre quem chamou determinado m\u00e9todo? Isso mesmo! Estou falando dos atributos CallerMemberName, CallerFilePath e CallerLineNumber. Al\u00e9m disso, eles [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Atributos Especiais de Informa\u00e7\u00f5es - DotNetDicas - C\u00f3digo forte, Carreira mais forte<\/title>\n<meta name=\"description\" content=\"No C# existem alguns atributos especiais usados quando queremos obter informa\u00e7\u00f5es sobre quem chamou um determinado m\u00e9todo, que s\u00e3o os...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dotnetdicas.com.br\/?p=15\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Atributos Especiais de Informa\u00e7\u00f5es - DotNetDicas - C\u00f3digo forte, Carreira mais forte\" \/>\n<meta property=\"og:description\" content=\"No C# existem alguns atributos especiais usados quando queremos obter informa\u00e7\u00f5es sobre quem chamou um determinado m\u00e9todo, que s\u00e3o os...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dotnetdicas.com.br\/?p=15\" \/>\n<meta property=\"og:site_name\" content=\"DotNetDicas - C\u00f3digo forte, Carreira mais forte\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-17T20:49:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-10T15:59:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-300x198.jpg\" \/>\n<meta name=\"author\" content=\"L\u00facio Torres\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"L\u00facio Torres\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=15\",\"url\":\"https:\/\/dotnetdicas.com.br\/?p=15\",\"name\":\"Atributos Especiais de Informa\u00e7\u00f5es - DotNetDicas - C\u00f3digo forte, Carreira mais forte\",\"isPartOf\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/#website\"},\"datePublished\":\"2023-09-17T20:49:22+00:00\",\"dateModified\":\"2023-12-10T15:59:46+00:00\",\"author\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa\"},\"description\":\"No C# existem alguns atributos especiais usados quando queremos obter informa\u00e7\u00f5es sobre quem chamou um determinado m\u00e9todo, que s\u00e3o os...\",\"breadcrumb\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=15#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dotnetdicas.com.br\/?p=15\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=15#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/dotnetdicas.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Atributos Especiais de Informa\u00e7\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#website\",\"url\":\"https:\/\/dotnetdicas.com.br\/\",\"name\":\"DotNetDicas - C\u00f3digo forte, Carreira mais forte\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dotnetdicas.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa\",\"name\":\"L\u00facio Torres\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g\",\"caption\":\"L\u00facio Torres\"},\"sameAs\":[\"https:\/\/dotnetdicas.com.br\"],\"url\":\"https:\/\/dotnetdicas.com.br\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Atributos Especiais de Informa\u00e7\u00f5es - DotNetDicas - C\u00f3digo forte, Carreira mais forte","description":"No C# existem alguns atributos especiais usados quando queremos obter informa\u00e7\u00f5es sobre quem chamou um determinado m\u00e9todo, que s\u00e3o os...","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:\/\/dotnetdicas.com.br\/?p=15","og_locale":"pt_BR","og_type":"article","og_title":"Atributos Especiais de Informa\u00e7\u00f5es - DotNetDicas - C\u00f3digo forte, Carreira mais forte","og_description":"No C# existem alguns atributos especiais usados quando queremos obter informa\u00e7\u00f5es sobre quem chamou um determinado m\u00e9todo, que s\u00e3o os...","og_url":"https:\/\/dotnetdicas.com.br\/?p=15","og_site_name":"DotNetDicas - C\u00f3digo forte, Carreira mais forte","article_published_time":"2023-09-17T20:49:22+00:00","article_modified_time":"2023-12-10T15:59:46+00:00","og_image":[{"url":"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/09\/atresp-300x198.jpg"}],"author":"L\u00facio Torres","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"L\u00facio Torres","Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dotnetdicas.com.br\/?p=15","url":"https:\/\/dotnetdicas.com.br\/?p=15","name":"Atributos Especiais de Informa\u00e7\u00f5es - DotNetDicas - C\u00f3digo forte, Carreira mais forte","isPartOf":{"@id":"https:\/\/dotnetdicas.com.br\/#website"},"datePublished":"2023-09-17T20:49:22+00:00","dateModified":"2023-12-10T15:59:46+00:00","author":{"@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa"},"description":"No C# existem alguns atributos especiais usados quando queremos obter informa\u00e7\u00f5es sobre quem chamou um determinado m\u00e9todo, que s\u00e3o os...","breadcrumb":{"@id":"https:\/\/dotnetdicas.com.br\/?p=15#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dotnetdicas.com.br\/?p=15"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dotnetdicas.com.br\/?p=15#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/dotnetdicas.com.br\/"},{"@type":"ListItem","position":2,"name":"Atributos Especiais de Informa\u00e7\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/dotnetdicas.com.br\/#website","url":"https:\/\/dotnetdicas.com.br\/","name":"DotNetDicas - C\u00f3digo forte, Carreira mais forte","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dotnetdicas.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa","name":"L\u00facio Torres","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g","caption":"L\u00facio Torres"},"sameAs":["https:\/\/dotnetdicas.com.br"],"url":"https:\/\/dotnetdicas.com.br\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/15"}],"collection":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":14,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions\/152"}],"wp:attachment":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}