{"id":9366,"date":"2011-10-09T12:59:00","date_gmt":"2011-10-09T10:59:00","guid":{"rendered":"https:\/\/fatihboy.com\/post\/toplanabilir-dinamik-assemblyler"},"modified":"2021-06-13T16:51:16","modified_gmt":"2021-06-13T13:51:16","slug":"toplanabilir-dinamik-assemblyler","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/toplanabilir-dinamik-assemblyler\/","title":{"rendered":"Toplanabilir Dinamik Assembly&#8217;ler"},"content":{"rendered":"<p>&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z bir s\u00fcre \u00f6nce size <a href=\"\/en\/calisma-zamani-dinamik-kod-olusturma\/\">\u00e7al\u0131\u015fma-zaman\u0131 nas\u0131l dinamik kod olu\u015fturabilece\u011finizden<\/a> bahsetmi\u015ftim. Geli\u015ftirdi\u011fimiz \u00f6rnek kod \u00fczerinden ekrana \u201c<em>Merhaba Dinamik D\u00fcnya<\/em>\u201d yazan bir konsol uygulamas\u0131 olu\u015fturarak diske kaydetmi\u015f, ard\u0131ndan da uygulamam\u0131z \u00fczerinden olu\u015fan kodu nas\u0131l kullanabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Makalemde basit bir uygulama ile \u00f6rneklemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131m reflection&nbsp; emit \u00e7ok g\u00fc\u00e7l\u00fc; ama dikkatli kullan\u0131lmad\u0131\u011f\u0131nda da bir o kadar tehlikeli bir y\u00f6ntemdir. Tehlikelidir diyorum; \u00e7\u00fcnk\u00fc bilin\u00e7siz kullan\u0131ld\u0131\u011f\u0131nda uygulaman\u0131z\u0131n \u00f6nemli bir haf\u0131za alan\u0131n\u0131 i\u015fgal etmesine neden olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Ne demek istedi\u011fimi daha rahat anlatabilmek ad\u0131na \u00f6nceki makalemde payla\u015fm\u0131\u015f oldu\u011fum kodu biraz d\u00fczenleyerek a\u015fa\u011f\u0131da yeniden sizlerle payla\u015f\u0131yorum;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System; \nusing System.Linq; \nusing System.Reflection; \nusing System.Reflection.Emit;\n\nnamespace Com.Enterprisecoding.CollectibleAssemblies { \n    class Program { \n        static void Main(string[] args) { \n            var merhabaDunyaTuru = TuruOlustur();\n\n            merhabaDunyaTuru.GetMethod(\"Main\").Invoke(null, new string[] { null }); \n            merhabaDunyaTuru = null;\n\n            YukluAssemblyleriYazdir();\n\n            GC.Collect();\n\n            YukluAssemblyleriYazdir();\n\n            Console.ReadKey(); \n        }\n\n        private static void YukluAssemblyleriYazdir() { \n            Console.WriteLine(\"\"); \n            Console.WriteLine(\"======================\"); \n            Console.WriteLine(\"Y\u00fckl\u00fc assembly'ler\"); \n            Console.WriteLine(\"======================\"); \n            Console.WriteLine(string.Join(Environment.NewLine, AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().Name))); \n        }\n\n        private static Type TuruOlustur() { \n            var assemblyAdi = new AssemblyName(\"Com.Enterprisecoding.MerhabaDinamikDunya\"); \n            var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyAdi, AssemblyBuilderAccess.Run); \n            var modul = assemblyBuilder.DefineDynamicModule(\"MerhabaDinamikDunya\"); \n            var typeBuilder = modul.DefineType(\"DinamikSinif\", TypeAttributes.Public | TypeAttributes.Class); \n            var metodbuilder = typeBuilder.DefineMethod(\"Main\", \n                MethodAttributes.HideBySig | MethodAttributes.Static | MethodAttributes.Public, \n                typeof(void), \n                new Type[] { typeof(string[]) }); \n            var ilOlusturucu = metodbuilder.GetILGenerator(); \n            ilOlusturucu.EmitWriteLine(\"Merhaba Dinamik D\u00fcnya\"); \n            ilOlusturucu.Emit(OpCodes.Ret);\n\n            return typeBuilder.CreateType(); \n        } \n    } \n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Dikkat edecek olursan\u0131z \u00f6nceki makalemden farkl\u0131 olarak bu sefer olu\u015fan kodu dosya sistemine saklamak yerine \u00e7al\u0131\u015fma zaman\u0131nda kullanmay\u0131 tercih ettim. Dinamik olu\u015fan assembly\u2019i dosya sistemine saklamayaca\u011f\u0131m i\u00e7in de AssemblyBuilderAccess.<strong>RunAndSave<\/strong> demek yerine AssemblyBuilderAccess.<strong>Run<\/strong> diyerek haf\u0131za kullan\u0131m\u0131 i\u00e7in haz\u0131rl\u0131yorum. Ard\u0131ndan olu\u015fan kodu \u00e7al\u0131\u015ft\u0131r\u0131p uygulamam taraf\u0131ndan haf\u0131zaya y\u00fcklenmi\u015f t\u00fcm assembly\u2019leri listeliyorum. Dikkat edecek olursan\u0131z i\u015fim bitince merhabaDunyaTuru de\u011fi\u015fkenimi s\u0131f\u0131rl\u0131yorum. Kullan\u0131lmayan t\u00fcm haf\u0131za alanlar\u0131n\u0131n temizlendi\u011finden emin olmak i\u00e7in t\u00fcm i\u015flemlerin sonunda Garbage Collector\u2019\u00fc GC.Collect() yard\u0131m\u0131yla tetikleyip tekrardan y\u00fckl\u00fc assembly\u2019leri listeliyorum.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu haliyle uygulamay\u0131 komut sat\u0131r\u0131ndan \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131daki \u00e7\u0131kti \u00f6n\u00fcm\u00fcze gelecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/AssemblyBuilderAccess.Run_.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/AssemblyBuilderAccess.Run_thumb.png\" alt=\"AssemblyBuilderAccess.Run kullan\u0131ld\u0131\u011f\u0131nda olu\u015fturulan t\u00fcrler her daim haf\u0131zada y\u00fckl\u00fc olarak kalacakt\u0131r\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi dinamik olu\u015fturdu\u011fum t\u00fcr art\u0131k uygulamam\u0131n hi\u00e7 bir noktas\u0131nda referans g\u00f6sterilmese de haf\u0131zada kalmaya devam etmekte. Bu basit \u00f6rnekten yola \u00e7\u0131karak olu\u015fturulan kompleks uygulamalarda belirli i\u015f mant\u0131klar\u0131 \u00e7er\u00e7evesinde dinamik olarak kodlar \u00fcretti\u011fimizi farz edelim. Bu dinamik kodlarla i\u015fimiz bitti\u011finde s\u0131f\u0131rlayarak bu t\u00fcrlerden kurtuldu\u011fumuzu d\u00fc\u015f\u00fcnsekte, yukar\u0131daki \u00f6rnekte de g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi bu t\u00fcrler dinamik bile olsa, bir kez olu\u015fturulduktan sonra her daim haf\u0131zada y\u00fckl\u00fc olarak kalacakt\u0131r. Dolay\u0131s\u0131yla da uzun soluklu \u00e7al\u0131\u015fan dinamik uygulamalarda bir s\u00fcre sonras\u0131nda gereksiz bir haf\u0131za y\u00fck\u00fc olu\u015fmas\u0131 ka\u00e7\u0131n\u0131lmaz olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu s\u0131k\u0131nt\u0131y\u0131 \u00e7\u00f6zmek ad\u0131na alternatif y\u00f6ntemler geli\u015ftirilebilir. Bu y\u00f6ntemlerde ilk akl\u0131ma gelen dinamik kod \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131n olu\u015fturulan ikincil bir appdomain i\u00e7erisinde ger\u00e7ekle\u015ftirilmesidir. Olu\u015fturulan bu ikincil appdomain\u2019in i\u015fi bitince unload edilerek haf\u0131zada olu\u015fturdu\u011fu y\u00fckten kurtulmak m\u00fcmk\u00fcn; fakat b\u00f6ylesi bir kod hem daha karma\u015f\u0131k hem de \u00e7al\u0131\u015fma zaman\u0131nda daha maliyetli olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu s\u0131k\u0131nt\u0131y\u0131 g\u00f6ren .Net Framework geli\u015ftiricileri 4.0 s\u00fcr\u00fcm\u00fc ile birlikte Dinamik assembly olu\u015fturulurken kullan\u0131lan AssemblyBuilderAccess enum\u2019una <strong>RunAndCollect<\/strong> de\u011ferini de eklemi\u015flerdir. Bu parametre ile olu\u015fturulan dinamik assembly\u2019ler kullan\u0131lmalar\u0131 sonras\u0131nda herhangi bir referans kalmamas\u0131 durumunda haf\u0131zadan temizleneceklerdir. \u00d6rnekleme gerekirse; yukar\u0131daki kodumuzda dinamik assembly olu\u015fturulurken kulland\u0131\u011f\u0131m\u0131z AssemblyBuilderAccess.<strong>Run<\/strong> de\u011feri yerine AssemblyBuilderAccess.<strong>RunAndCollect<\/strong> kulland\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131daki \u00e7\u0131kt\u0131 elde edilecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/AssemblyBuilderAccess.RunAndCollect.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/AssemblyBuilderAccess.RunAndCollect_thumb.png\" alt=\"AssemblyBuilderAccess.RunAndCollect kullan\u0131ld\u0131\u011f\u0131nda olu\u015fturulan t\u00fcrlere bir referans kalmamas\u0131 durumunda haf\u0131zadan temizleneceklerdir\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi ilk kullan\u0131mdan farkl\u0131 olarak RunAndCollect parametresi ile olu\u015fturulan dinamik assembly\u2019ler kullan\u0131mlar\u0131 sonunda bir referans kalmamas\u0131 durumunda haf\u0131zdan at\u0131lmakta. Yukar\u0131da, garbage collector devreye girdikten sonra y\u00fckl\u00fc assemb ly\u2019ler ikinci defa listelendi\u011finde dinamik olu\u015fturdu\u011fumuz Com.Enterprisecoding.MerhabaDinamikDunya assembly\u2019si art\u0131k bulunmamakta.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Hayat\u0131m\u0131z\u0131 kolayla\u015ft\u0131ran Toplanabilir assembly\u2019lerle \u00e7al\u0131\u015fman\u0131n tabi ki bir ka\u00e7 k\u0131s\u0131t\u0131 bulunmakta;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> \u00d6ncelikle olu\u015fturulan dinamik assembly\u2019ler disk\u2019e saklanamamaktad\u0131r <\/li><li> COM aray\u00fczleri tan\u0131mlanamaz; fakat COM aray\u00fczler kullan\u0131labilir <\/li><li> DllImportAttribute \u00f6zniteli\u011fi bulunan metod tan\u0131mlamas\u0131 yap\u0131lamaz. Platform invoke yap\u0131labilmesi, unmanaged kod \u00e7a\u011fr\u0131s\u0131 i\u00e7in toplanabilir olmayan assemby\u2019ler kullan\u0131labilir. Toplanabilir assembly\u2019lerden bu t\u00fcrlerin tan\u0131ml\u0131 oldu\u011fu toplanabilir olmayan assembly\u2019lerde yer alan t\u00fcrler kullan\u0131labilir <\/li><li> Toplanabilir assembly\u2019lerin y\u00fcklenmesinin tek yolu relection emit y\u00f6ntemidir. Farkl\u0131 bir y\u00f6ntemle y\u00fcklenen hi\u00e7 bir assembly daha sonradan haf\u0131zadan kald\u0131r\u0131lamaz <\/li><li> Thread-static&nbsp; ve Context-static de\u011fi\u015fkenler desteklenmemektedir <\/li><\/ul>\n\n\n\n<p>&nbsp; Toplanabilir bir assembly\u2019nin ya\u015fam s\u00fcresi bu assembly ve i\u00e7erisindeki t\u00fcrlere olan referanslar ile belirlenmektedir. Bu assembly i\u00e7erisindeki herhangi bir t\u00fcre ait hi\u00e7 bir referans kalmamas\u0131 durumunda assembly haf\u0131zadan temizlenecektir. Burada dikkat edilmesi gereken nokta assembly i\u00e7erisindeki t\u00fcrlere ait Type ve TypeBuilder referanslar\u0131da s\u0131f\u0131rlanm\u0131\u015f olmal\u0131d\u0131r. Benzer \u015fekilde olu\u015fturulan ModuleBuilder, TypeBuilder, AssemblyBuilder, LocalBuilder, ILGenerator gibi referanslarda assembly\u2019nin temizlenmesini engelleyecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131da sizinlen payla\u015ft\u0131\u011f\u0131m \u00f6rnek kodda T\u00fcr olu\u015fturma i\u015fi ayn\u0131 bir metod i\u00e7erisinde yap\u0131ld\u0131\u011f\u0131ndan metoddan geri d\u00f6n\u00fcld\u00fc\u011f\u00fcnde metod i\u00e7erisinde olu\u015fturulmu\u015f olan assemblyBuilder, modul, typeBuilder, metodbuilder ve ilOlusturucu gibi de\u011fi\u015fkenler temizlenecektir. Dolay\u0131s\u0131yla toparlanabilir dinamik assembly\u2019mize olan tek referans Main metodumuz i\u00e7erisindeki merhabaDunyaTuru de\u011fi\u015fkeni olacakt\u0131r. Bu de\u011fi\u015fkenin de s\u0131f\u0131rlanmas\u0131 sonras\u0131nda ise herhangi bir referans kalmayaca\u011f\u0131ndan bir sonraki d\u00f6ng\u00fcde t\u00fcr Gerbage Collector taraf\u0131ndan temizlenecektir.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z bir s\u00fcre \u00f6nce size \u00e7al\u0131\u015fma-zaman\u0131 nas\u0131l dinamik kod olu\u015fturabilece\u011finizden bahsetmi\u015ftim. Geli\u015ftirdi\u011fimiz \u00f6rnek kod \u00fczerinden ekrana \u201cMerhaba Dinamik D\u00fcnya\u201d yazan bir konsol uygulamas\u0131 olu\u015fturarak diske kaydetmi\u015f, ard\u0131ndan da uygulamam\u0131z \u00fczerinden olu\u015fan kodu nas\u0131l kullanabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Makalemde basit bir uygulama ile \u00f6rneklemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131m reflection&nbsp; emit \u00e7ok g\u00fc\u00e7l\u00fc; ama dikkatli kullan\u0131lmad\u0131\u011f\u0131nda da bir o kadar&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/toplanabilir-dinamik-assemblyler\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":9368,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[41,74],"class_list":["post-9366","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-c","tag-reflection"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Toplanabilir Dinamik Assembly&#039;ler - Fatih Boy<\/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:\/\/fatihboy.com\/en\/toplanabilir-dinamik-assemblyler\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Toplanabilir Dinamik Assembly&#039;ler - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z bir s\u00fcre \u00f6nce size \u00e7al\u0131\u015fma-zaman\u0131 nas\u0131l dinamik kod olu\u015fturabilece\u011finizden bahsetmi\u015ftim. Geli\u015ftirdi\u011fimiz \u00f6rnek kod \u00fczerinden ekrana \u201cMerhaba Dinamik D\u00fcnya\u201d yazan bir konsol uygulamas\u0131 olu\u015fturarak diske kaydetmi\u015f, ard\u0131ndan da uygulamam\u0131z \u00fczerinden olu\u015fan kodu nas\u0131l kullanabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Makalemde basit bir uygulama ile \u00f6rneklemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131m reflection&nbsp; emit \u00e7ok g\u00fc\u00e7l\u00fc; ama dikkatli kullan\u0131lmad\u0131\u011f\u0131nda da bir o kadar...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/toplanabilir-dinamik-assemblyler\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2011-10-09T10:59:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-13T13:51:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"209\" \/>\n\t<meta property=\"og:image:height\" content=\"208\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Toplanabilir Dinamik Assembly&#8217;ler\",\"datePublished\":\"2011-10-09T10:59:00+00:00\",\"dateModified\":\"2021-06-13T13:51:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/\"},\"wordCount\":927,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png\",\"keywords\":[\"C#\",\"Reflection\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/\",\"url\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/\",\"name\":\"Toplanabilir Dinamik Assembly'ler - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png\",\"datePublished\":\"2011-10-09T10:59:00+00:00\",\"dateModified\":\"2021-06-13T13:51:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png\",\"width\":209,\"height\":208},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toplanabilir Dinamik Assembly&#8217;ler\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Toplanabilir Dinamik Assembly'ler - Fatih Boy","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:\/\/fatihboy.com\/en\/toplanabilir-dinamik-assemblyler\/","og_locale":"en_US","og_type":"article","og_title":"Toplanabilir Dinamik Assembly'ler - Fatih Boy","og_description":"&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z bir s\u00fcre \u00f6nce size \u00e7al\u0131\u015fma-zaman\u0131 nas\u0131l dinamik kod olu\u015fturabilece\u011finizden bahsetmi\u015ftim. Geli\u015ftirdi\u011fimiz \u00f6rnek kod \u00fczerinden ekrana \u201cMerhaba Dinamik D\u00fcnya\u201d yazan bir konsol uygulamas\u0131 olu\u015fturarak diske kaydetmi\u015f, ard\u0131ndan da uygulamam\u0131z \u00fczerinden olu\u015fan kodu nas\u0131l kullanabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Makalemde basit bir uygulama ile \u00f6rneklemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131m reflection&nbsp; emit \u00e7ok g\u00fc\u00e7l\u00fc; ama dikkatli kullan\u0131lmad\u0131\u011f\u0131nda da bir o kadar...Read More","og_url":"https:\/\/fatihboy.com\/en\/toplanabilir-dinamik-assemblyler\/","og_site_name":"Fatih Boy","article_published_time":"2011-10-09T10:59:00+00:00","article_modified_time":"2021-06-13T13:51:16+00:00","og_image":[{"width":209,"height":208,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png","type":"image\/png"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Toplanabilir Dinamik Assembly&#8217;ler","datePublished":"2011-10-09T10:59:00+00:00","dateModified":"2021-06-13T13:51:16+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/"},"wordCount":927,"commentCount":3,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png","keywords":["C#","Reflection"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/","url":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/","name":"Toplanabilir Dinamik Assembly'ler - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png","datePublished":"2011-10-09T10:59:00+00:00","dateModified":"2021-06-13T13:51:16+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/10\/disposable_thumb.png","width":209,"height":208},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/toplanabilir-dinamik-assemblyler\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Toplanabilir Dinamik Assembly&#8217;ler"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=9366"}],"version-history":[{"count":2,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9366\/revisions"}],"predecessor-version":[{"id":33350,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9366\/revisions\/33350"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/9368"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=9366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=9366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=9366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}