{"id":2260,"date":"2020-11-10T22:36:23","date_gmt":"2020-11-10T21:36:23","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/dependency-injection-in-delphi"},"modified":"2023-02-13T21:05:48","modified_gmt":"2023-02-13T20:05:48","slug":"injecao-de-dependencia-em-delphi","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi","title":{"rendered":"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi"},"content":{"rendered":"<p>Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi? Eu criei um exemplo para voc\u00ea no qual passamos de um c\u00f3digo fortemente acoplado a um belo c\u00f3digo desacoplado em algumas etapas atrav\u00e9s da Inje\u00e7\u00e3o de Depend\u00eancia e com a ajuda de interfaces.<\/p>\n<p>Vamos come\u00e7ar com o exemplo a seguir:<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">unit<\/span> DI1<span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">interface<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">type<\/span>\r\n  TLanguageTools <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">private<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n  TWordApp <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">private<\/span>\r\n    F<span style=\"color: #333333;\">LanguageTools:<\/span> TLanguageTools<span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">public<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">constructor<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Create<\/span><span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">implementation<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">constructor<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TWordApp<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">Create<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  FLanguageTools <span style=\"color: #333333;\">:=<\/span> TLanguageTools<span style=\"color: #333333;\">.<\/span>Create<span style=\"color: #333333;\">;<\/span>\r\n\r\n  FLanguageTools<span style=\"color: #333333;\">.<\/span>Translate<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #888888;\">{ TLanguageTools }<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TLanguageTools<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #888888;\">\/\/<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TLanguageTools<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #888888;\">\/\/<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">.<\/span>\r\n<\/pre>\n<\/div>\n<p>Como voc\u00ea pode ver, n\u00e3o h\u00e1 nada de errado com o c\u00f3digo em princ\u00edpio. \u00c9 um c\u00f3digo Delphi v\u00e1lido e funciona. No entanto, h\u00e1 algumas observa\u00e7\u00f5es a serem feitas. Primeiro de tudo, o c\u00f3digo \u00e9 fortemente acoplado; a classe TWordApp n\u00e3o s\u00f3 depende da classe TLanguageTools, mas voc\u00ea n\u00e3o pode nem mesmo estender a classe TLanguageTools com funcionalidade extra. Mesmo que voc\u00ea substitua a classe TLanguageTools com, por exemplo, TEnglishLanguageTools, TWordApp simplesmente usa a classe base TLanguageTools.<\/p>\n<p>Podemos fazer melhor do que isso! Uma primeira grande melhoria \u00e9 remover a depend\u00eancia do construtor Criar, e injet\u00e1-la. Injetar uma depend\u00eancia pode ser feito de v\u00e1rias maneiras, atrav\u00e9s de propriedades, procedimentos ou construtores. Neste exemplo, eu uso o construtor. O c\u00f3digo abaixo j\u00e1 tem uma depend\u00eancia um pouco mais frouxa entre as duas classes:<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">unit<\/span> DI2<span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">interface<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">type<\/span>\r\n  TLanguageTools <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">private<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n  TWordApp <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">private<\/span>\r\n    F<span style=\"color: #333333;\">LanguageTools:<\/span> TLanguageTools<span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">public<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">constructor<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Create<\/span>(ALanguageTools<span style=\"color: #333333;\">:<\/span> TLanguageTools)<span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">implementation<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">constructor<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TWordApp<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">Create<\/span>(ALanguageTools<span style=\"color: #333333;\">:<\/span> TLanguageTools)<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  FLanguageTools <span style=\"color: #333333;\">:=<\/span> ALanguageTools<span style=\"color: #333333;\">;<\/span>\r\n\r\n  FLanguageTools<span style=\"color: #333333;\">.<\/span>Translate<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n\r\n<span style=\"color: #888888;\">{ TLanguageTools }<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TLanguageTools<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #888888;\">\/\/<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TLanguageTools<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #888888;\">\/\/<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">.<\/span>\r\n<\/pre>\n<\/div>\n<p>Como voc\u00ea pode ver no exemplo, ainda estamos usando a classe TLanguageTools. Entretanto, agora \u00e9 poss\u00edvel substituir esta classe TLanguageTools, e dar esta nova classe \u00e0 classe TWordApp. E na verdade, esta \u00e9 a base da classe Dependency Injection. Seu c\u00f3digo \u00e9 muito mais frouxamente acoplado e reutiliz\u00e1vel.<\/p>\n<p>Usando interfaces, podemos ir um passo al\u00e9m. \u00c9 poss\u00edvel descrever a funcionalidade da classe TLanguageTools em diferentes interfaces, e pass\u00e1-la para a classe TWordApp. Desta forma, programamos contra abstra\u00e7\u00f5es, e n\u00e3o contra implementa\u00e7\u00f5es.<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">unit<\/span> DI3<span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">interface<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">type<\/span>\r\n  IGrammarChecker <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">interface<\/span>\r\n    [<span style=\"background-color: #fff0f0;\">'{FED7BA76-0EDE-40E7-BABB-16BCFE76F6DF}'<\/span>]\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n  ITranslator <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">interface<\/span>\r\n    [<span style=\"background-color: #fff0f0;\">'{C1F1092F-3589-49E5-8F22-33E8D7587A8B}'<\/span>]\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n\r\n  TLanguageTools <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span>(TInterfacedObject<span style=\"color: #333333;\">,<\/span> IGrammarChecker<span style=\"color: #333333;\">,<\/span> ITranslator)\r\n  <span style=\"color: #003388; font-weight: bold;\">private<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n  TWordApp <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">class<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">private<\/span>\r\n    FTranslator<span style=\"color: #333333;\">:<\/span> ITranslator<span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #003388; font-weight: bold;\">public<\/span>\r\n    <span style=\"color: #008800; font-weight: bold;\">constructor<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Create<\/span>(ATranslator<span style=\"color: #333333;\">:<\/span> ITranslator)<span style=\"color: #333333;\">;<\/span>\r\n  <span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">implementation<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">constructor<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TWordApp<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">Create<\/span>(ATranslator<span style=\"color: #333333;\">:<\/span> ITranslator)<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  FTranslator <span style=\"color: #333333;\">:=<\/span> ATranslator<span style=\"color: #333333;\">;<\/span>\r\n\r\n  FTranslator<span style=\"color: #333333;\">.<\/span>Translate<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TLanguageTools<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">CheckGrammar<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #888888;\">\/\/<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #bb0066; font-weight: bold;\">TLanguageTools<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #0066bb; font-weight: bold;\">Translate<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #888888;\">\/\/<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">.<\/span>\r\n<\/pre>\n<\/div>\n<p>Como voc\u00ea pode ver, a classe TWordApp n\u00e3o depende mais da classe TLanguageTools. Desde que passemos para o construtor uma inst\u00e2ncia com uma implementa\u00e7\u00e3o da interface do ITranslator, o c\u00f3digo apenas funcionar\u00e1. N\u00e3o precisamos mais nem mesmo da classe TLanguageTools.<\/p>\n<p>Assim, com a ajuda da Inje\u00e7\u00e3o de Depend\u00eancia e com interfaces, obtemos um c\u00f3digo de fonte agrad\u00e1vel, desacoplado e bem conservado.<\/p>\n<p><a class=\"btn btn-primary btn-icon\" href=\"https:\/\/gdksoftware.com\/pt-br\/heroi-do-delphi\" target=\"\" rel=\"noopener\">Torne-se um her\u00f3i da GDK Delphi! Subscreva aqui para nossa lista de correio da Delphi!<\/a><\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-2260","knowledge","type-knowledge","status-publish","hentry"],"acf":{"author":1398,"type_hero":"compact","hero_image":2256,"hero_image_position":"","hero_title":"","hero_content":"","hero_link":null,"hero_show_h1":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Inje\u00e7\u00e3o de Depend\u00eancia em Delphi<\/title>\n<meta name=\"description\" content=\"Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi\" \/>\n<meta property=\"og:description\" content=\"Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-13T20:05:48+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/injecao-de-dependencia-em-delphi\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/injecao-de-dependencia-em-delphi\",\"name\":\"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"datePublished\":\"2020-11-10T21:36:23+00:00\",\"dateModified\":\"2023-02-13T20:05:48+00:00\",\"description\":\"Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi?\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/injecao-de-dependencia-em-delphi#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/injecao-de-dependencia-em-delphi\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/injecao-de-dependencia-em-delphi#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledgebase\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delphi\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/knowledgebase-category\\\/arquivo-delphi\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\",\"name\":\"GDK Software\",\"description\":\"Zet de stip op je horizon\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi","description":"Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi?","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:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi","og_locale":"pt_BR","og_type":"article","og_title":"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi","og_description":"Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi?","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi","og_site_name":"GDK Software","article_modified_time":"2023-02-13T20:05:48+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi","name":"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"datePublished":"2020-11-10T21:36:23+00:00","dateModified":"2023-02-13T20:05:48+00:00","description":"Sempre quis saber como usar a Inje\u00e7\u00e3o de Depend\u00eancia com Delphi?","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/injecao-de-dependencia-em-delphi#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gdksoftware.com\/pt-br"},{"@type":"ListItem","position":2,"name":"Knowledgebase","item":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento"},{"@type":"ListItem","position":3,"name":"Delphi","item":"https:\/\/gdksoftware.com\/pt-br\/knowledgebase-category\/arquivo-delphi"},{"@type":"ListItem","position":4,"name":"Inje\u00e7\u00e3o de Depend\u00eancia em Delphi"}]},{"@type":"WebSite","@id":"https:\/\/gdksoftware.com\/pt-br#website","url":"https:\/\/gdksoftware.com\/pt-br","name":"GDK Software","description":"Zet de stip op je horizon","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gdksoftware.com\/pt-br?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge\/2260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/types\/knowledge"}],"acf:post":[{"embeddable":true,"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/team\/1398"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/media?parent=2260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}