﻿
{"id":4816,"date":"2016-08-02T18:08:15","date_gmt":"2016-08-02T18:08:15","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=4816"},"modified":"2016-08-02T18:08:15","modified_gmt":"2016-08-02T18:08:15","slug":"cta-xmlserializer-sinifinda-generic-extension-metodlar-ile-serialization-yahut-deserialization","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-xmlserializer-sinifinda-generic-extension-metodlar-ile-serialization-yahut-deserialization\/","title":{"rendered":"C#&#8217;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/cta-xmlserializer-sinifi-ile-serialization-ve-deserialization\/\" target=\"_blank\">C#&#8217;ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda XmlSerializer s\u0131n\u0131f\u0131 ile serile\u015ftirme ve paralelle\u015ftirme i\u015flemlerini irdelemi\u015ftik. \u015eimdi ise bu s\u0131n\u0131f\u0131 Extension metod olarak Generic yap\u0131da kullanmay\u0131 g\u00f6rece\u011fiz.<\/p>\n<p>A\u015fa\u011f\u0131da in\u015fa edilmi\u015f Extension metodu inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    static class Extension\r\n    {\r\n        static public bool XMLKaydet&lt;T&gt;(this T nesne, string Dizin) where T : class, new()\r\n        {\r\n            var xml = new XmlSerializer(typeof(T));\r\n            using (StreamWriter sw = new StreamWriter(Dizin))\r\n            {\r\n                xml.Serialize(sw, nesne);\r\n                return true;\r\n            }\r\n        }\r\n\r\n        static public T XMLYukle&lt;T&gt;(this T nesne, string Dizin) where T : class, new()\r\n        {\r\n            var xml = new XmlSerializer(typeof(T));\r\n            using (StreamReader sr = new StreamReader(Dizin))\r\n            {\r\n                var gelen = (T)xml.Deserialize(sr);\r\n                foreach (var property in nesne.GetType().GetProperties())\r\n                {\r\n                    gelen.GetType().GetProperties().ToList().ForEach(p =&gt;\r\n                    {\r\n                        if (p.Name == property.Name)\r\n                        {\r\n                            property.SetValue(nesne, p.GetValue(gelen));\r\n                        }\r\n                    });\r\n                }\r\n                return nesne;\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>Evet, XmlSerializer s\u0131n\u0131f\u0131n\u0131 her nesnede kullanabilece\u011fimiz Generic Extension metod yap\u0131lar\u0131 olu\u015fturmu\u015f olduk. XMLYukle metodu i\u00e7erisinde gelen tipin t\u00fcm propertyleri taranmakta ve xml dosyas\u0131ndan elde edilip ilgili tipe cast edilmi\u015f nesnenin denk gelen propertylerine verileri set edilmektedir. Ee art\u0131k geri kalan algoritma ve izah\u0131 sizlerin emeklerine kalm\u0131\u015f.<\/p>\n<p>\u00d6rnek olarak a\u015fa\u011f\u0131daki gibi bir ka\u00e7 s\u0131n\u0131f olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class A\r\n    {\r\n        public int a1 { get; set; }\r\n        public int a2 { get; set; }\r\n    }\r\n    public class B\r\n    {\r\n        public int b1 { get; set; }\r\n        public int b2 { get; set; }\r\n    }\r\n    public class C\r\n    {\r\n        public int c1 { get; set; }\r\n        public int c2 { get; set; }\r\n    }\r\n<\/pre>\n<p>\u015eimdi Generic Extension metodlar\u0131m\u0131z\u0131 yukar\u0131daki s\u0131n\u0131flar\u0131n nesneleri \u00fczerinde kullanmay\u0131 deneyelim.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization\" width=\"296\" height=\"207\" class=\"aligncenter size-full wp-image-4818\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi nesnemiz \u00fczerinde Extension metodlara eri\u015febilmekteyiz. Burada sadece A tipinden nesne \u00fczerinde g\u00f6rsel \u00f6rneklendirme yap\u0131lm\u0131\u015ft\u0131r. Tabi ki de di\u011fer t\u00fcm nesnelerde de ayn\u0131 Extension metodlara eri\u015filebilmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            A a = new A();\r\n            a.a1 = 1;\r\n            a.a2 = 2;\r\n            a.XMLKaydet(@&quot;D:\\XMLA.xml&quot;);\r\n            B b = new B();\r\n            b.b1 = 3;\r\n            b.b2 = 4;\r\n            b.XMLKaydet(@&quot;D:\\XMLB.xml&quot;);\r\n            C c = new C();\r\n            c.c1 = 5;\r\n            c.c2 = 6;\r\n            c.XMLKaydet(@&quot;D:\\XMLC.xml&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<p>Bu i\u015flem neticesinde &#8220;D&#8221; dizininde a\u015fa\u011f\u0131daki gibi XML dosyalar\u0131 olu\u015fturulmu\u015f olacakt\u0131r.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-1.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization\" width=\"155\" height=\"80\" class=\"aligncenter size-full wp-image-4825\" \/><\/a><br \/>\n\u0130\u00e7erikleride a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<\/p>\n<table>\n<tr>\n<td><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-2.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization\" width=\"186\" height=\"76\" class=\"aligncenter size-full wp-image-4827\" \/><\/a>\n<\/td>\n<td><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-3.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization\" width=\"148\" height=\"73\" class=\"aligncenter size-full wp-image-4829\" \/><\/a>\n<\/td>\n<td><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-4.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization\" width=\"203\" height=\"67\" class=\"aligncenter size-full wp-image-4830\" \/><\/a>\n<\/td>\n<\/tr>\n<tr>\n<td>A Class<\/td>\n<td>B Class<\/td>\n<td>C Class<\/td>\n<\/tr>\n<\/table>\n<p>\u015eimdide di\u011fer Extension metodumuz olan XMLYukle metodunu kullanal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            A a = new A();\r\n            a.XMLYukle(@&quot;D:\\XMLA.xml&quot;);\r\n            Console.WriteLine($&quot;A -&gt; {a.a1} {a.a2}&quot;);\r\n            B b = new B();\r\n            b.XMLYukle(@&quot;D:\\XMLB.xml&quot;);\r\n            Console.WriteLine($&quot;B -&gt; {b.b1} {b.b2}&quot;);\r\n            C c = new C();\r\n            c.XMLYukle(@&quot;D:\\XMLC.xml&quot;);\r\n            Console.WriteLine($&quot;C -&gt; {c.c1} {c.c2}&quot;);\r\n\r\n            Console.Read();\r\n        }\r\n    }\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131nda-Generic-Extension-Metodlar-\u0130le-Serialization-yahut-Deserialization-5.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131nda Generic Extension Metodlar \u0130le Serialization yahut Deserialization\" width=\"111\" height=\"81\" class=\"aligncenter size-full wp-image-4834\" \/><\/a><\/p>\n<p>San\u0131r\u0131m Generic Extension metodlar\u0131 e\u015fli\u011finde XmlSerializer s\u0131n\u0131f\u0131n\u0131 kullanman\u0131n tad\u0131 ayr\u0131 bir lezzetli olsa gerek ki ayriyetten yukar\u0131daki algoritma ile olu\u015fturdu\u011fumuz yap\u0131 ile XML \u00e7al\u0131\u015fmalar\u0131nda m\u00fckemmel pratiklik kazanaca\u011f\u0131m\u0131zda \u015f\u00fcphesizdir.<\/p>\n<p>Velhas\u0131l okudu\u011funuz i\u00e7in te\u015fekk\u00fcr ederim&#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, Bir \u00f6nceki C#&#8217;ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization ba\u015fl\u0131kl\u0131 yaz\u0131mda XmlSerializer s\u0131n\u0131f\u0131 ile serile\u015ftirme ve paralelle\u015ftirme i\u015flemlerini irdelemi\u015ftik. \u015eimdi ise bu s\u0131n\u0131f\u0131 Extension metod olarak Generic yap\u0131da kullanmay\u0131 g\u00f6rece\u011fiz. A\u015fa\u011f\u0131da in\u015fa edilmi\u015f&#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":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,234],"tags":[1395,232,145,1397,1396],"class_list":["post-4816","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-xml","tag-deserialization","tag-extension","tag-generic","tag-serialization","tag-xmlserializer"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4816","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=4816"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4816\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=4816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=4816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=4816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}