{"id":382,"date":"2015-07-24T00:21:58","date_gmt":"2015-07-23T21:21:58","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=382"},"modified":"2015-07-24T13:35:52","modified_gmt":"2015-07-24T10:35:52","slug":"c-template-method-kullanimi","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/c-template-method-kullanimi\/","title":{"rendered":"C# Template Method Kullan\u0131m\u0131"},"content":{"rendered":"<p>Merhaba arkada\u015flar,<\/p>\n<p>Uzun bir bayram aras\u0131ndan sonra\u00a0<strong>Behavioral<\/strong>(Davran\u0131\u015fsal)\u00a0tasar\u0131m kal\u0131plar\u0131 konumuza kald\u0131\u011f\u0131m\u0131z yerden h\u0131zla devam ediyor olaca\u011f\u0131z. :)<\/p>\n<p>Yine kullan\u0131m oran\u0131 olduk\u00e7a s\u0131k g\u00f6r\u00fclen\u00a0bir tasar\u0131m deseni olan <strong>Template Method<\/strong> desenini inceleyece\u011fiz.<\/p>\n<p>Template Method deseni i\u00e7in:<\/p>\n<blockquote><p>\u015eablon bir algoritmam\u0131z\u0131n <strong>soyut(abstract)<\/strong> bir\u00a0s\u0131n\u0131fa implemente edilip, sorumluluklar\u0131n alt s\u0131n\u0131flara da\u011f\u0131t\u0131lmas\u0131 i\u015flemidir diyebiliriz.<\/p><\/blockquote>\n<p>Bu sayede bize kataca\u011f\u0131 avantajlar\u0131 ele ald\u0131\u011f\u0131m\u0131zda ise:<\/p>\n<ul>\n<li>Kod tekrar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ilerek, tekrar kullan\u0131labilirli\u011fi artt\u0131r\u0131r<\/li>\n<li>Maintenance i\u015flemi olarakta, \u015fablon algoritma\u00a0\u00fczerinde ger\u00e7ekle\u015ftirilerek bir de\u011fi\u015fimi tek bir noktadan yap\u0131labilmesini\u00a0sa\u011flamaktad\u0131r<\/li>\n<\/ul>\n<p>UML \u015femas\u0131 a\u015fa\u011f\u0131daki gibidir:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/TemplateMethodDiagram.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-383 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/07\/TemplateMethodDiagram.gif\" alt=\"TemplateMethodDiagram\" width=\"326\" height=\"211\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 326px; --smush-placeholder-aspect-ratio: 326\/211;\" \/><\/a><\/p>\n<p><strong>AbstractClass<\/strong>: \u015eablon\u00a0algoritmam\u0131z\u0131n tan\u0131mlanaca\u011f\u0131 soyut s\u0131n\u0131f.<br \/>\n<strong>ConcreteClass<\/strong>: \u015eablon algoritman\u0131n ad\u0131mlar\u0131n\u0131 ger\u00e7ekle\u015ftirecek olan ger\u00e7ek s\u0131n\u0131f\u0131m\u0131z.<\/p>\n<p>Bir \u00f6rnek \u00fczerinde kullan\u0131m\u0131na bir bakal\u0131m.<\/p>\n<p>\u00d6rne\u011fimizde basit bir <strong>Configuration Reader<\/strong> k\u00fct\u00fcphanesi olu\u015ftural\u0131m. Bu k\u00fct\u00fcphane ister <strong>App.Config<\/strong> istersede <strong>xml<\/strong> dosyas\u0131 \u00fczerinden verece\u011fimiz bir <strong>key<\/strong> do\u011frultusunda bize de\u011ferini okuyup getirebilecek. Buradaki \u015fablon algoritmam\u0131z ise <strong>Read<\/strong> i\u015flemi olsun.<\/p>\n<pre class=\"lang:c# decode:true\">    public abstract class ConfigurationBase\r\n    {\r\n        public object Read(string key)\r\n        {\r\n            \/\/ \u015eablon algoritma isteketi \u00fczerinde istenilen i\u015fleri yapt\u0131rabilirsiniz. Caching i\u015flemleri, Validation vs.\r\n            object val = GetValue(key); \/\/ \u015eablon algoritma uygulan\u0131r.\r\n\r\n            return val;\r\n        }\r\n\r\n       \u00a0\/\/ Alt s\u0131n\u0131flar\u0131n ilgili i\u015flemi uygulayabilmesi i\u00e7in soyutluyoruz.\r\n        protected abstract object GetValue(string key);\r\n    }<\/pre>\n<p>ConfigurationBase soyut s\u0131n\u0131f\u0131m\u0131z\u0131 tan\u0131mlad\u0131k ve \u015fablon algoritma iskeletimiz olan Read metotunu implemente ettik. Read metotu i\u00e7erisinde ise ilgili alt s\u0131n\u0131flar\u0131n kendilerine \u00f6zel sorumluluklarda ilgili metotu override edebilmeleri i\u00e7in GetValue isminde d\u0131\u015far\u0131ya kapal\u0131 bir abstract metot tan\u0131mlad\u0131k.<\/p>\n<p>\u015eimdi s\u0131ra geldi ger\u00e7ekleyecek olan s\u0131n\u0131f\u0131m\u0131za.<\/p>\n<pre class=\"lang:c# decode:true\">    public class AppConfigReader : ConfigurationBase\r\n    {\r\n        protected override object GetValue(string key)\r\n        {\r\n            return System.Configuration.ConfigurationManager.AppSettings[key];\r\n        }\r\n    }<\/pre>\n<p><strong>AppConfigReader<\/strong> s\u0131n\u0131f\u0131nda\u00a0<strong>ConfigurationBase<\/strong> soyut s\u0131n\u0131f\u0131n\u0131 miras alarak yine soyut olarak tan\u0131mlad\u0131\u011f\u0131m\u0131z <strong>GetValue<\/strong> metotunun <strong>override<\/strong> i\u015flemini ger\u00e7ekle\u015ftirdi ve kendi sorumlulu\u011funda olan <strong>App.Config<\/strong> \u00fczerinden okuma i\u015flemini ger\u00e7ekle\u015ftirdi.<\/p>\n<p>Bunun gibi ger\u00e7ekleyen s\u0131n\u0131flar\u0131 ilgili i\u015f kurallar\u0131n\u0131z gere\u011fi sizde \u00e7o\u011faltabilirsiniz. <strong>Xml<\/strong>\u00a0dosyas\u0131 \u00fczerinden okuma, <strong>veritaban\u0131<\/strong> \u00fczerinden okuma gibi.<\/p>\n<p>Kullan\u0131m\u0131na ge\u00e7meden \u00f6nce ilgili ger\u00e7ekleyen s\u0131n\u0131flar\u0131m\u0131z\u0131n \u00fcretiminden sorumlu olacak ilgili <strong>factory<\/strong> s\u0131n\u0131f\u0131n\u0131 yazal\u0131m :) Bir sonraki makale konumda ise<strong>\u00a0Factory Method tasar\u0131m deseni<\/strong> hakk\u0131nda detayl\u0131 bilgiyi verece\u011fim.<\/p>\n<pre class=\"lang:c# decode:true\">    public class ConfigurationFactory\r\n    {\r\n        \/\/ Istem d\u0131\u015f\u0131 bir \u00f6rnekleme al\u0131namamas\u0131 i\u00e7in constructor'\u0131 private yap\u0131yoruz.\r\n        private ConfigurationFactory()\r\n        {\r\n\r\n        }\r\n\r\n        \/\/ Tek bir \u00f6rne\u011finin olabilmesi i\u00e7in Lazy s\u0131n\u0131f\u0131 arac\u0131l\u0131\u011f\u0131 ile Singleton tasar\u0131m desenini uyguluyoruz.\r\n        private readonly static Lazy&lt;ConfigurationFactory&gt; _instance = new Lazy&lt;ConfigurationFactory&gt;(() =&gt; new ConfigurationFactory());\r\n        public static ConfigurationFactory getInstance\r\n        {\r\n            get\r\n            {\r\n                return _instance.Value;\r\n            }\r\n        }\r\n\r\n        public ConfigurationBase CreateReader(string readerName)\r\n        {\r\n            \/\/ \u0130lgili \u00fcr\u00fctme i\u015flemini if-else bloglar\u0131ndan kurtarabilmek i\u00e7in bir ka\u00e7 k\u00fc\u00e7\u00fck\r\n            \/\/ reflection kodu yazarak a\u015fmak m\u00fcmk\u00fcn. Fakat 1-2 s\u0131n\u0131f i\u00e7in u\u011fra\u015fmaya de\u011fmez. :)\r\n            if (readerName == \"AppConfigReader\")\r\n            {\r\n                return new AppConfigReader();\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }<\/pre>\n<p>ConfigurationFactory s\u0131n\u0131f\u0131n\u0131da\u00a0<strong>Singleton tasar\u0131m deseninide<\/strong> uygulayarak geli\u015ftirdik. Art\u0131k ger\u00e7ek s\u0131n\u0131flar\u0131m\u0131z\u0131n \u00fcretiminden de sorumlu olacak tek bir s\u0131n\u0131f\u0131m\u0131z var.<\/p>\n<p>Her \u015fey\u00a0haz\u0131r oldu\u011funa g\u00f6re \u015fimdi kullan\u0131m\u0131na bir g\u00f6z atal\u0131m:<\/p>\n<pre class=\"lang:c# decode:true\">        static void Main(string[] args)\r\n        {\r\n            ConfigurationBase appConfigReader = ConfigurationFactory.getInstance.CreateReader(\"AppConfigReader\");\r\n\r\n            Console.WriteLine(appConfigReader.Read(\"NeredenGeliyorsun\"));\r\n            Console.ReadLine();\r\n        }<\/pre>\n<p>\u00d6rne\u011fimizde \u015fablon algoritmam\u0131z\u0131 <strong>ConfigurationBase<\/strong> s\u0131n\u0131f\u0131na implemente ederek <strong>Read<\/strong> i\u015flemini ilgili alt s\u0131n\u0131flara b\u0131rakt\u0131k. Bu sayede \u015fablon algoritmam\u0131z \u00fczerinde tek bir noktadan yani <strong>ConfigurationBase<\/strong> \u00fczerinden istedi\u011fimiz de\u011fi\u015fikli\u011fi yapabilir bir hale getirdik. <strong>ConfigurationFactory<\/strong> s\u0131n\u0131f\u0131 arac\u0131l\u0131\u011f\u0131 ise \u00fcretim i\u015flerini tek bir s\u0131n\u0131fa y\u00fckledik.<\/p>\n<p>Ekran \u00e7\u0131kt\u0131s\u0131 a\u015fa\u011f\u0131daki gibidir:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/templatemethod.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-384 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/07\/templatemethod.jpg\" alt=\"templatemethod\" width=\"675\" height=\"314\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/07\/templatemethod.jpg 675w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/07\/templatemethod-300x140.jpg 300w\" data-sizes=\"(max-width: 675px) 100vw, 675px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 675px; --smush-placeholder-aspect-ratio: 675\/314;\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba arkada\u015flar, Uzun bir bayram aras\u0131ndan sonra\u00a0Behavioral(Davran\u0131\u015fsal)\u00a0tasar\u0131m kal\u0131plar\u0131 konumuza kald\u0131\u011f\u0131m\u0131z yerden h\u0131zla devam ediyor olaca\u011f\u0131z. :) Yine kullan\u0131m oran\u0131 olduk\u00e7a s\u0131k g\u00f6r\u00fclen\u00a0bir tasar\u0131m deseni olan Template Method desenini inceleyece\u011fiz. Template Method deseni i\u00e7in: \u015eablon bir algoritmam\u0131z\u0131n soyut(abstract) bir\u00a0s\u0131n\u0131fa implemente edilip, sorumluluklar\u0131n alt s\u0131n\u0131flara da\u011f\u0131t\u0131lmas\u0131 i\u015flemidir&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/c-template-method-kullanimi\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">C# Template Method Kullan\u0131m\u0131<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[47],"tags":[95,97,96,94],"class_list":["post-382","post","type-post","status-publish","format-standard","hentry","category-tasarim-kaliplari-design-patterns","tag-c-template-method-kullanimi","tag-factory-method-tasarim-deseni","tag-singleton-tasarim-deseni","tag-template-method","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C# Template Method Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp<\/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:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Template Method Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-23T21:21:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-07-24T10:35:52+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"C# Template Method Kullan\u0131m\u0131\",\"datePublished\":\"2015-07-23T21:21:58+00:00\",\"dateModified\":\"2015-07-24T10:35:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/\"},\"wordCount\":511,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\"C# Template Method Kullan\u0131m\u0131\",\"Factory Method tasar\u0131m deseni\",\"Singleton Tasar\u0131m Deseni\",\"Template Method\"],\"articleSection\":[\"Tasar\u0131m Kal\u0131plar\u0131 (Design Patterns)\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/\",\"name\":\"C# Template Method Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2015-07-23T21:21:58+00:00\",\"dateModified\":\"2015-07-24T10:35:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-template-method-kullanimi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Template Method Kullan\u0131m\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C# Template Method Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","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:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/","og_locale":"tr_TR","og_type":"article","og_title":"C# Template Method Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2015-07-23T21:21:58+00:00","article_modified_time":"2015-07-24T10:35:52+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"3 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"C# Template Method Kullan\u0131m\u0131","datePublished":"2015-07-23T21:21:58+00:00","dateModified":"2015-07-24T10:35:52+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/"},"wordCount":511,"commentCount":2,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":["C# Template Method Kullan\u0131m\u0131","Factory Method tasar\u0131m deseni","Singleton Tasar\u0131m Deseni","Template Method"],"articleSection":["Tasar\u0131m Kal\u0131plar\u0131 (Design Patterns)"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/","url":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/","name":"C# Template Method Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2015-07-23T21:21:58+00:00","dateModified":"2015-07-24T10:35:52+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/c-template-method-kullanimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"C# Template Method Kullan\u0131m\u0131"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=382"}],"version-history":[{"count":5,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/382\/revisions"}],"predecessor-version":[{"id":389,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/382\/revisions\/389"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}