{"id":8433,"date":"2010-10-22T21:51:56","date_gmt":"2010-10-22T19:51:56","guid":{"rendered":"https:\/\/fatihboy.com\/post\/ileri-duzey-serilestirme-2"},"modified":"2010-10-22T21:51:56","modified_gmt":"2010-10-22T19:51:56","slug":"ileri-duzey-serilestirme-2","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-2\/","title":{"rendered":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2"},"content":{"rendered":"<p>&nbsp;&nbsp; <a href=\"\/en\/?p=8410\">Bir \u00f6nceki makalemde<\/a> .Net framework serile\u015ftirme i\u015flemlerini detayl\u0131 olarak incelemi\u015f ve ileri d\u00fczey kullan\u0131mlar\u0131 \u00f6rneklemeye \u00e7al\u0131\u015fm\u0131\u015ft\u0131m. Bir \u00f6rnek \u00fczerinden 3.parti assembly\u2019ler i\u00e7erisinde bulunan ve serile\u015ftirilebilir olarak i\u015faretlenmemi\u015f s\u0131n\u0131flar\u0131n ileri d\u00fczey y\u00f6ntemlerle nas\u0131l serile\u015ftirilebilece\u011fini payla\u015fm\u0131\u015ft\u0131m. Bu makalemde ayn\u0131 \u00f6rnekler \u00fczerinden giderek vekil <em>se\u00e7im zinciri<\/em> ve nas\u0131l genel-ge\u00e7er bir vekil se\u00e7ici yapabilece\u011finizi payla\u015faca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Serile\u015ftirme s\u0131ras\u0131nda, seyrekte olsa, kimi senaryolarda birden fazla vekil se\u00e7icinin bir zincirin par\u00e7as\u0131 \u015feklinde ard\u0131l olarak kullan\u0131m\u0131 gerekebilir. \u0130ki farkl\u0131 AppDomain aras\u0131nda ileti\u015fimi sa\u011flayan bir serile\u015ftirmeyi d\u00fc\u015f\u00fcn\u00fcn, versiyon de\u011fi\u015fikli\u011fi sonras\u0131 kabul etmeniz gereken iki farkl\u0131 grup nesne modeli (versiyon 1 ve versiyon 2 gibi) aras\u0131nda da se\u00e7im yapman\u0131z gerekebilir. B\u00f6yle bir senaryoda&nbsp; birden fazla vekil se\u00e7iciye ihtiya\u00e7 duyulacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Serile\u015ftirme mimarisi tasarlan\u0131rken b\u00f6ylesi senaryolar da \u00f6ng\u00f6r\u00fclerek birden fazla vekil se\u00e7iciden olu\u015fan zincirlerin olu\u015fturulabilmesine olanak sa\u011flanm\u0131\u015ft\u0131r. T\u00fcm vekil se\u00e7icilerin implemente etmek zorunda olduklar\u0131 <strong>ISurrogateSelector <\/strong>aray\u00fcz\u00fcnde yer alan <strong>ChainSelector<\/strong> ve <strong>GetNextSelector<\/strong> fonksiyonlar\u0131 bu ama\u00e7 i\u00e7in kullan\u0131lmaktad\u0131r.<\/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=\"\">public interface ISurrogateSelector {\n   void ChainSelector(ISurrogateSelector secici);\n\n   ISurrogateSelector GetNextSelector();\n\n   ISerializationSurrogate GetSurrogate(Type tur, StreamingContext kapsam, out ISurrogateSelector secici);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu fonksiyonlardan <em>ChainSelector<\/em> kullan\u0131larak zincirin bir sonraki halkas\u0131n\u0131 belirtebilir ve <em>GetNextSelector<\/em> fonksiyonu ile de bir sonraki vekil se\u00e7iciye ula\u015fabilirsiniz. <em>GetSurrogate<\/em> fonksiyonuna g\u00f6nderilen t\u00fcr ve kapsam parametreleri yard\u0131m\u0131yla kullan\u0131lmas\u0131 gereken serile\u015ftirme vekiline karar vererek sistem taraf\u0131ndan kullan\u0131lmas\u0131 \u00fczere de\u011fer olarak geri d\u00f6nd\u00fcrebilirsiniz.&nbsp; E\u011fer tan\u0131mlad\u0131\u011f\u0131n\u0131z vekil se\u00e7ici verilen parametrelere uygun bir serile\u015ftirme vekili bulamazsa, <strong>zincirin bir sonraki halkas\u0131na sorulmas\u0131 i\u00e7in bo\u015f (null) de\u011fer d\u00f6nd\u00fcrmelidir<\/strong>. \u0130sterseniz <em>ISurrogateSelector<\/em> aray\u00fcz\u00fcn\u00fc implemente ederek kendi vekil se\u00e7icilerinizi de olu\u015fturman\u0131z m\u00fcmk\u00fcn.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Kendi vekil se\u00e7icimizi olu\u015fturmadan \u00f6nce isterseniz <a href=\"\/en\/?p=8410\">\u00f6nceki makalemde<\/a> yer alan \u00f6rnekte kulland\u0131\u011f\u0131m \u015fu iki sat\u0131r\u0131 inceleyelim;<\/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=\"\">SurrogateSelector vekilSecici = new SurrogateSelector();\nformatter.SurrogateSelector = vekilSecici;<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Burada .net framework ile birlikte gelen <strong>SurrogateSelector<\/strong> s\u0131n\u0131f\u0131n\u0131 kullan\u0131larak ilgili t\u00fcr i\u00e7in kullan\u0131lmas\u0131 gereken vekil\u2019in bulunmas\u0131 i\u015finden kurtulmu\u015f ve h\u0131zl\u0131ca t\u00fcr\u00fcn serile\u015ftirilebilmesine odaklanabilmi\u015ftik. <em>Ogrenci<\/em> s\u0131n\u0131f\u0131n\u0131n serile\u015ftirilmesi g\u00f6revini \u00fcstlenen <em>OgrenciSerializationSurrogate<\/em> s\u0131n\u0131f\u0131m\u0131z\u0131 haz\u0131rlad\u0131ktan sonra&nbsp; a\u015fa\u011f\u0131daki sat\u0131rlar yard\u0131m\u0131yla da bunu vekil se\u00e7icimize tan\u0131tm\u0131\u015ft\u0131k;<\/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=\"\">OgrenciSerializationSurrogate serilestirmeVekili = new OgrenciSerializationSurrogate();\nvekilSecici.AddSurrogate(typeof(Ogrenci), new StreamingContext(StreamingContextStates.All), serilestirmeVekili);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu basit \u00f6rnek i\u00e7in s\u0131k\u0131nt\u0131s\u0131z i\u015fleyecek olan bu kod par\u00e7as\u0131, y\u00f6netilmesi gereken Ogrenci s\u0131n\u0131f\u0131na ek olarak yeni ba\u015fka s\u0131n\u0131flar \u00e7\u0131kt\u0131\u011f\u0131nda i\u015fleri karma\u015f\u0131kla\u015ft\u0131racakt\u0131r. Bu karma\u015f\u0131kl\u0131\u011fa bir de 3. parti k\u00fct\u00fcphane i\u00e7erisinden hangi t\u00fcrlerin gelebilece\u011finiz bilemedi\u011fimiz senaryolar\u0131 da eklersek san\u0131r\u0131m kafan\u0131zda k\u00f6t\u00fc bir resim olu\u015fturmu\u015f olurum. B\u00f6ylesi&nbsp; bir durumda .net framework ile birlikte gelen SurrogateSelector\u2019\u00fcn i\u015fimizi g\u00f6rmeyece\u011fi ortadad\u0131r ve yap\u0131lmas\u0131 gereken \u00f6zel bir vekil se\u00e7ici s\u0131n\u0131f\u0131n olu\u015fturulmas\u0131d\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; A\u015fa\u011f\u0131da yer alan NonSerializedSurrogateSelector s\u0131n\u0131f\u0131 serile\u015ftirilemeyen Ogrenci ve benzeri s\u0131n\u0131flar i\u00e7in olu\u015fturulabilecek \u00f6zelle\u015fmi\u015f vekil se\u00e7icilere bir \u00f6rnektir;<\/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=\"\">public sealed class NonSerializedSurrogateSelector : ISurrogateSelector {\n    private ISurrogateSelector sonrakiVekilSecici;\n    private ISerializationSurrogate serilestirmeVekili = new GenericSerializationSurrogate();\n\n    #region ISurrogateSelector Members\n\n    public void ChainSelector(ISurrogateSelector selector) {\n        sonrakiVekilSecici = selector;\n    }\n\n    public ISurrogateSelector GetNextSelector() {\n        return sonrakiVekilSecici;\n    }\n\n    public ISerializationSurrogate GetSurrogate(Type type, StreamingContext context, out ISurrogateSelector selector) {\n        if (!type.IsDefined(typeof(SerializableAttribute), true)) {\n            selector = this;\n            return serilestirmeVekili;\n        }\n\n        selector = null;\n        return null;\n    }\n\n    #endregion\n}<\/pre>\n\n\n\n<p><em>&nbsp;&nbsp; ISurrogateSelector<\/em> aray\u00fcz\u00fcn\u00fc implemente eden <strong>NonSerializedSurrogateSelector<\/strong>&nbsp; s\u0131n\u0131f\u0131m zincirin bir sonraki&nbsp; halkas\u0131n\u0131 tutmak i\u00e7in 2. sat\u0131rda tan\u0131mlanan <em>sonrakiVekilSecici<\/em> de\u011fi\u015fkenini kullanmakta, <em>ChainSelector<\/em> ve <em>GetNextSelector<\/em> fonksiyonlar\u0131nda bu de\u011fi\u015fkeni ile i\u015flem yapmakta. <em>GetSurrogate<\/em> fonksiyonu i\u00e7erisinde ise gelen t\u00fcr\u00fcn SerializableAttribute ile i\u015faretlenip i\u015faretlenmedi\u011fini kontrol ederek <strong>serile\u015ftirilemez i\u015faretlenen t\u00fcrler i\u00e7in<\/strong> 3. sat\u0131rda tan\u0131m\u0131 yap\u0131lm\u0131\u015f olan <em>serilestirmeVekili<\/em>\u2019ni d\u00f6nmektedir. Bu \u00f6rnekte, serile\u015ftirilebilen t\u00fcrler i\u00e7in bir efor sarfedilmesi gerekmedi\u011finden, bu t\u00fcrlerde s\u0131n\u0131f\u0131m\u0131z bir vekil d\u00f6nmeyerek i\u015fin sistem taraf\u0131ndan yap\u0131lmas\u0131 sa\u011flanm\u0131\u015ft\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; NonSerializedSurrogateSelector s\u0131n\u0131f\u0131 bize t\u00fcm serile\u015ftirilemeyen t\u00fcrlerde istedi\u011fimiz bir serile\u015ftirme vekilini kullanabilme \u015fans\u0131 sunmakta. NonSerializedSurrogateSelector s\u0131n\u0131f\u0131 i\u00e7erisinde yer alan <strong>GenericSerializationSurrogate<\/strong> s\u0131n\u0131f\u0131 bizim taraf\u0131m\u0131zdan yaz\u0131lacak olan ve <em>ISerializationSurrogate<\/em> aray\u00fcz\u00fcn\u00fc implemente eden bir s\u0131n\u0131ft\u0131r. <a href=\"\/en\/?p=8410\">Bir \u00f6nceki makalemde<\/a> kulland\u0131\u011f\u0131m <strong>OgrenciSerializationSurrogate<\/strong>\u2019den farkl\u0131 olarak genel ge\u00e7er bir vekil tan\u0131mlamas\u0131d\u0131r ve t\u00fcr bilgilerinin al\u0131nmas\u0131 i\u00e7in reflection y\u00f6ntemine ba\u015fvurulmu\u015ftur. A\u015fa\u011f\u0131da bu s\u0131n\u0131f\u0131n i\u00e7eri\u011fini bulabilirsiniz;<\/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=\"\">public sealed class GenericSerializationSurrogate : ISerializationSurrogate {\n    public void GetObjectData(Object nesne,\n        SerializationInfo serilestirmeBilgisi,\n        StreamingContext kapsam) {\n\n        FieldInfo[] nesneAlanlari = nesne.GetType().GetFields();\n\n        foreach (var nesneAlani in nesneAlanlari) {\n            if (nesneAlani.MemberType == MemberTypes.Field || nesneAlani.MemberType == MemberTypes.Property) {\n                serilestirmeBilgisi.AddValue(nesneAlani.Name, nesneAlani.GetValue(nesne));\n            }\n        }\n    }\n\n    public Object SetObjectData(Object nesne,\n        SerializationInfo serilestirmeBilgisi,\n        StreamingContext kapsam,\n        ISurrogateSelector vekilSecici) {\n\n        FieldInfo[] nesneAlanlari = nesne.GetType().GetFields();\n\n        foreach (var nesneAlani in nesneAlanlari) {\n            if (nesneAlani.MemberType == MemberTypes.Field || nesneAlani.MemberType == MemberTypes.Property) {\n                nesneAlani.SetValue(nesne, serilestirmeBilgisi.GetValue(nesneAlani.Name, nesneAlani.FieldType));\n            }\n        }\n\n        return null;\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; S\u0131n\u0131f i\u00e7erisinde yer alan ve ISerializationSurrogate&nbsp; aray\u00fcz\u00fcnden gelen GetObjectData ile SetObjectData fonksiyonlar\u0131 i\u00e7erisinde gelen nesnenin t\u00fcm alanlar\u0131 (6. ve 20. sat\u0131rda) listelenmekte. Ard\u0131ndan bu alanlardan t\u00fcr\u00fc <em>de\u011fi\u015fken<\/em> ve <em>\u00f6zellik<\/em> olanlar\u0131n (9. ve 24. sat\u0131r) isimleri ve ta\u015f\u0131d\u0131klar\u0131 de\u011fer serile\u015ftirilmekte ve geri okunmakta.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131daki ad\u0131mlar sonras\u0131 art\u0131k elimizde generik bir serile\u015ftirme kodu olu\u015facakt\u0131r. A\u015fa\u011f\u0131daki \u00f6rnek kod par\u00e7ac\u0131\u011f\u0131n\u0131 kullanarak test yapabilirsiniz;<\/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=\"\">BinaryFormatter formatter = new BinaryFormatter();\nformatter.SurrogateSelector = new NonSerializedSurrogateSelector();\n\nOgrenci ogrenciOrnegi = new Ogrenci();\nogrenciOrnegi.Adi = \"Fatih Boy\";\nogrenciOrnegi.Bolum =  \"Bilgisayar M\u00fchendisli\u011fi\";\n\nvar stream = new MemoryStream();\nformatter.Serialize(stream, ogrenciOrnegi);\n\nstream.Seek(0, SeekOrigin.Begin);\nvar sonuc = (Ogrenci)formatter.Deserialize(stream);[<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Yazm\u0131\u015f oldu\u011fumuz kod serile\u015ftirilebilir olarak s\u0131n\u0131flar da \u00e7al\u0131\u015ft\u0131\u011f\u0131 gibi a\u015fa\u011f\u0131da \u00f6rneklenen karma s\u0131n\u0131flarda da sorunsuz \u015fekilde \u00e7al\u0131\u015fabilmektedir;<\/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=\"\">public class Ogrenci {\n    public string Adi;\n    public Bolum Bolum;\n}\n\n[Serializable]\npublic class Bolum {\n    public string Adi;\n    public string Kodu;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; A\u015fa\u011f\u0131daki kodunu kullanarak yeni s\u0131n\u0131flar\u0131m\u0131z\u0131 test edebilirsiniz;<\/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=\"\">BinaryFormatter formatter = new BinaryFormatter();\nformatter.SurrogateSelector = new NonSerializedSurrogateSelector();\n\nOgrenci ogrenciOrnegi = new Ogrenci();\nogrenciOrnegi.Adi = \"Fatih Boy\";\nogrenciOrnegi.Bolum = new Bolum();\nogrenciOrnegi.Bolum.Adi = \"Bilgisayar M\u00fchendisli\u011fi\";\nogrenciOrnegi.Bolum.Kodu = \"CENG\";\n\nvar stream = new MemoryStream();\nformatter.Serialize(stream, ogrenciOrnegi);\n\nstream.Seek(0, SeekOrigin.Begin);\nvar sonuc = (Ogrenci)formatter.Deserialize(stream);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; <em>Bolum<\/em> s\u0131n\u0131f\u0131 ba\u015f\u0131nda bulunan Serializable \u00f6zeniteli\u011fini kald\u0131rd\u0131\u011f\u0131n\u0131zda da \u00f6rne\u011fimiz hatas\u0131z \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Bir \u00f6nceki makalemde .Net framework serile\u015ftirme i\u015flemlerini detayl\u0131 olarak incelemi\u015f ve ileri d\u00fczey kullan\u0131mlar\u0131 \u00f6rneklemeye \u00e7al\u0131\u015fm\u0131\u015ft\u0131m. Bir \u00f6rnek \u00fczerinden 3.parti assembly\u2019ler i\u00e7erisinde bulunan ve serile\u015ftirilebilir olarak i\u015faretlenmemi\u015f s\u0131n\u0131flar\u0131n ileri d\u00fczey y\u00f6ntemlerle nas\u0131l serile\u015ftirilebilece\u011fini payla\u015fm\u0131\u015ft\u0131m. Bu makalemde ayn\u0131 \u00f6rnekler \u00fczerinden giderek vekil se\u00e7im zinciri ve nas\u0131l genel-ge\u00e7er bir vekil se\u00e7ici yapabilece\u011finizi payla\u015faca\u011f\u0131m. &nbsp;&nbsp; Serile\u015ftirme s\u0131ras\u0131nda,&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-2\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[41,109],"class_list":["post-8433","post","type-post","status-publish","format-standard","hentry","category-csharp","category-turkce","tag-c","tag-serialization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u0130leri D\u00fczey Serile\u015ftirme \u2013 2 - 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\/ileri-duzey-serilestirme-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2 - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Bir \u00f6nceki makalemde .Net framework serile\u015ftirme i\u015flemlerini detayl\u0131 olarak incelemi\u015f ve ileri d\u00fczey kullan\u0131mlar\u0131 \u00f6rneklemeye \u00e7al\u0131\u015fm\u0131\u015ft\u0131m. Bir \u00f6rnek \u00fczerinden 3.parti assembly\u2019ler i\u00e7erisinde bulunan ve serile\u015ftirilebilir olarak i\u015faretlenmemi\u015f s\u0131n\u0131flar\u0131n ileri d\u00fczey y\u00f6ntemlerle nas\u0131l serile\u015ftirilebilece\u011fini payla\u015fm\u0131\u015ft\u0131m. Bu makalemde ayn\u0131 \u00f6rnekler \u00fczerinden giderek vekil se\u00e7im zinciri ve nas\u0131l genel-ge\u00e7er bir vekil se\u00e7ici yapabilece\u011finizi payla\u015faca\u011f\u0131m. &nbsp;&nbsp; Serile\u015ftirme s\u0131ras\u0131nda,...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2010-10-22T19:51:56+00:00\" \/>\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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2\",\"datePublished\":\"2010-10-22T19:51:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/\"},\"wordCount\":951,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"keywords\":[\"C#\",\"Serialization\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/\",\"url\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/\",\"name\":\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2 - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"datePublished\":\"2010-10-22T19:51:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2\"}]},{\"@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":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2 - 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\/ileri-duzey-serilestirme-2\/","og_locale":"en_US","og_type":"article","og_title":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2 - Fatih Boy","og_description":"&nbsp;&nbsp; Bir \u00f6nceki makalemde .Net framework serile\u015ftirme i\u015flemlerini detayl\u0131 olarak incelemi\u015f ve ileri d\u00fczey kullan\u0131mlar\u0131 \u00f6rneklemeye \u00e7al\u0131\u015fm\u0131\u015ft\u0131m. Bir \u00f6rnek \u00fczerinden 3.parti assembly\u2019ler i\u00e7erisinde bulunan ve serile\u015ftirilebilir olarak i\u015faretlenmemi\u015f s\u0131n\u0131flar\u0131n ileri d\u00fczey y\u00f6ntemlerle nas\u0131l serile\u015ftirilebilece\u011fini payla\u015fm\u0131\u015ft\u0131m. Bu makalemde ayn\u0131 \u00f6rnekler \u00fczerinden giderek vekil se\u00e7im zinciri ve nas\u0131l genel-ge\u00e7er bir vekil se\u00e7ici yapabilece\u011finizi payla\u015faca\u011f\u0131m. &nbsp;&nbsp; Serile\u015ftirme s\u0131ras\u0131nda,...Read More","og_url":"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-2\/","og_site_name":"Fatih Boy","article_published_time":"2010-10-22T19:51:56+00:00","author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2","datePublished":"2010-10-22T19:51:56+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/"},"wordCount":951,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"keywords":["C#","Serialization"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/","url":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/","name":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2 - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"datePublished":"2010-10-22T19:51:56+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 2"}]},{"@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\/8433","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=8433"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8433\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=8433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=8433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=8433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}