﻿
{"id":10004,"date":"2018-12-29T23:56:14","date_gmt":"2018-12-29T23:56:14","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=10004"},"modified":"2018-12-29T23:56:14","modified_gmt":"2018-12-29T23:56:14","slug":"cta-programatik-nesne-olusturma","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-programatik-nesne-olusturma\/","title":{"rendered":"C#&#8217;ta Programatik Nesne Olu\u015fturma"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>C# programlama dilinde bir s\u0131n\u0131ftan instance talep ederken &#8220;<em><strong>new<\/strong><\/em>&#8221; operat\u00f6r\u00fcn\u00fc kullanmaktay\u0131z. &#8220;new&#8221; operat\u00f6r\u00fc, talep edilecek olan nesnenin hangi s\u0131n\u0131ftan olaca\u011f\u0131n\u0131 kesin bilmek ister ve dolay\u0131s\u0131yla bu ihtiyac\u0131n\u0131 ilgili s\u0131n\u0131f\u0131n taraf\u0131m\u0131zdan belirtilerek giderilmesini istemektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnew MyClass();\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer &#8220;new&#8221; operat\u00f6r\u00fc &#8220;MyClass&#8221; isimli s\u0131n\u0131f\u0131n bir instance&#8217;ini talep etmektedir. Ama burada dikkat edilmesi gereken husus &#8220;MyClass&#8221; s\u0131n\u0131f\u0131n\u0131n taraf\u0131m\u0131zca ilgili operat\u00f6re bildiriliyor olmas\u0131d\u0131r.<\/p>\n<p>E\u011fer ki, &#8220;new&#8221; operat\u00f6r\u00fc kullanmaks\u0131z\u0131n bir s\u0131n\u0131f\u0131n instance&#8217;\u0131n\u0131 olu\u015fturmak istiyorsan\u0131z sizlere sunaca\u011f\u0131m iki farkl\u0131 y\u00f6ntemi uygulayabilirsiniz.<\/p>\n<p>Nesnesini \u00fcretmeye \u00e7al\u0131\u015faca\u011f\u0131m\u0131z s\u0131n\u0131f\u0131m\u0131z\u0131 a\u015fa\u011f\u0131da olu\u015ftural\u0131m&#8230;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Example\r\n    {\r\n        public string ExampleProperty { get; set; } = &quot;ExampleProperty&quot;;\r\n        public void Message()\r\n        {\r\n            Console.WriteLine(&quot;Example Message&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<h4>Activator S\u0131n\u0131f\u0131 \u0130le Nesne \u00dcretimi<\/h4>\n<p>Yukar\u0131daki &#8220;Example&#8221; isimli s\u0131n\u0131ftan &#8220;new&#8221; operat\u00f6r\u00fc olmaks\u0131z\u0131n &#8220;Activator&#8221; s\u0131n\u0131f\u0131 \u00fczerinden a\u015fa\u011f\u0131daki gibi instance talep edebilmekteyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Example example = Activator.CreateInstance(typeof(Example)) as Example;\r\n            Console.WriteLine(example.ExampleProperty);\r\n            example.Message();\r\n<\/pre>\n<h4>Assembly S\u0131n\u0131f\u0131 \u0130le Nesne \u00dcretimi<\/h4>\n<p>Benzer \u015fekilde Assembly s\u0131n\u0131f\u0131 arac\u0131l\u0131\u011f\u0131ylada &#8220;new&#8221; operat\u00f6r\u00fcn\u00fc kullanmaks\u0131z\u0131n ilgili s\u0131n\u0131f\u0131m\u0131zdan a\u015fa\u011f\u0131daki gibi nesne \u00fcretebilmekteyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Assembly assembly = Assembly.GetExecutingAssembly();\r\n            Example example = assembly.CreateInstance($&quot;ActivatorExample.{nameof(Example)}&quot;) as Example;\r\n            Console.WriteLine(example.ExampleProperty);\r\n            example.Message();\r\n<\/pre>\n<p>Ayr\u0131ca nesne \u00fcretmek istedi\u011fimiz s\u0131n\u0131f farkl\u0131 bir namespace i\u00e7erisinde bulunuyorsa a\u015fa\u011f\u0131daki gibi namespace ad\u0131n\u0131 belirtmemiz yeterlidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnamespace ActivatorExample2\r\n{\r\n    class Example\r\n    {\r\n        public string ExampleProperty { get; set; } = &quot;ExampleProperty&quot;;\r\n        public void Message()\r\n        {\r\n            Console.WriteLine(&quot;Example Message&quot;);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Assembly assembly = Assembly.GetExecutingAssembly();\r\n            Example example = assembly.CreateInstance($&quot;ActivatorExample2.{nameof(Example)}&quot;) as Example;\r\n            Console.WriteLine(example.ExampleProperty);\r\n            example.Message();\r\n<\/pre>\n<p>Bu \u015fekilde programatik nesne \u00fcretimleri spesifik durumlarda olduk\u00e7a etkili \u00e7\u00f6z\u00fcmler getirmekte veyahut <a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-factory-method-design-patternfactory-method-tasarim-deseni\/\" rel=\"noopener\" target=\"_blank\">Factory Design Pattern<\/a> vs. gibi tasar\u0131m kal\u0131plar\u0131nda s\u0131n\u0131f ismine olan birebir ba\u011fl\u0131l\u0131ktan bizleri soyutlamaktad\u0131r.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, C# programlama dilinde bir s\u0131n\u0131ftan instance talep ederken &#8220;new&#8221; operat\u00f6r\u00fcn\u00fc kullanmaktay\u0131z. &#8220;new&#8221; operat\u00f6r\u00fc, talep edilecek olan nesnenin hangi s\u0131n\u0131ftan olaca\u011f\u0131n\u0131 kesin bilmek ister ve dolay\u0131s\u0131yla bu ihtiyac\u0131n\u0131 ilgili s\u0131n\u0131f\u0131n taraf\u0131m\u0131zdan belirtilerek giderilmesini istemektedir.&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[2710,2711,1706,2712],"class_list":["post-10004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","tag-activator","tag-activator-create-instance","tag-assembly","tag-assembly-create-instance"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/10004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=10004"}],"version-history":[{"count":39,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/10004\/revisions"}],"predecessor-version":[{"id":10045,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/10004\/revisions\/10045"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=10004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=10004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=10004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}