{"id":33091,"date":"2010-09-10T22:50:26","date_gmt":"2010-09-10T20:50:26","guid":{"rendered":"https:\/\/fatihboy.com\/post\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2"},"modified":"2010-09-10T22:50:26","modified_gmt":"2010-09-10T20:50:26","slug":"oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/","title":{"rendered":"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2"},"content":{"rendered":"<p>&nbsp;&nbsp; <a href=\"\/en\/?p=696\" target=\"_blank\" rel=\"noopener noreferrer\">Bir \u00f6nceki makalemde<\/a> sizlere <strong>\u00f6znitelik (attribute)<\/strong> ve <strong>yans\u0131ma (reflection)<\/strong> konular\u0131nda bahsetmi\u015ftim. Her zaman dedi\u011fim gibi, bu ikili bir arada ger\u00e7ekten \u00e7ok \u00f6nemli bir g\u00fc\u00e7 haline gelmekte. Bu ikilinin kullan\u0131m\u0131na dair o kadar fazla \u015fey s\u00f6ylenebilir ki, tek makale buna hi\u00e7 bir zaman yetmeyecektir. Bu sebeple ikinci bir makale ile konuyu biraz daha derinle\u015ftirmek istedim.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Hat\u0131rlarsan\u0131z \u00f6nceki makalemde \u00f6znitelik ve reflection\u2019la C# diline yeni bir anahtar kelime ekleme ihtiyac\u0131 olmazs\u0131z\u0131n \u00f6zellikler ekleyebilece\u011finizden bahsetmi\u015ftim. Hatta bu yakla\u015f\u0131m\u0131n Microsoft taraf\u0131ndan da benimsendi\u011fini <strong>SerializableAttribute<\/strong>\u2019\u00fc \u00f6rnek g\u00f6stererek anlatm\u0131\u015ft\u0131m. Xml serialization s\u0131ras\u0131nda kullan\u0131lan \u00f6znitelikler, asmx ve wcf servislerinde kullan\u0131lan \u00f6znitelikler, hatta konsol uygulamalar\u0131nda kulland\u0131\u011f\u0131n\u0131z <strong>STAThreadAttribute<\/strong>\u2019\u00fc\u2026 \u00d6rnekler bu \u015fekilde uzay\u0131p gidiyor.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u0130lk makalemde sizlerle payla\u015ft\u0131\u011f\u0131m \u00f6rne\u011fi hat\u0131rlayal\u0131m;<\/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    [ZorunluAlan]\n    public string Adi;\n\n    [ZorunluAlan]\n    public string Bolum;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu \u00f6rnekte kulland\u0131\u011f\u0131m\u0131z \u00f6znitelikler her ne kadar kod i\u00e7erisine meta veri eklese de, yap\u0131lan i\u015fe bakt\u0131\u011f\u0131m\u0131zda daha \u00e7ok bir <strong>i\u015faretleme<\/strong> s\u00f6z konusu. Evet, <em>i\u015faretleme<\/em>; Ogrenci s\u0131n\u0131f\u0131m i\u00e7erisindeki Adi ve Bolum alanlar\u0131n\u0131 <em>zorunlu<\/em> olarak i\u015faretliyorum. Daha sonrada bu i\u015faretledi\u011fim alanlar \u00fczerinde do\u011frulama yap\u0131yorum.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6znitelikler ve reflection\u2019la yap\u0131bilece\u011finiz \u015feyler bu i\u015faretlemelerden \u00e7ok daha fazlas\u0131 asl\u0131na bakarsan\u0131z. \u00d6znitelikler, yap\u0131sal olarak bak\u0131ld\u0131\u011f\u0131nda birer s\u0131n\u0131ft\u0131r ve s\u0131n\u0131f i\u00e7erisinde metodlar olu\u015fturabilir, \u00f6zellikler ve alanlar i\u00e7erisinde veri tutabilirim; hatta istedi\u011fim aray\u00fcz\u00fc uygulayabilir, bir \u00f6zniteli\u011fi ba\u015fka bir \u00f6znitelikten kal\u0131tabilirim. Bu makalemde bu konulara de\u011finmek istiyorum.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bir s\u0131n\u0131f i\u00e7erisindeki string alanlar i\u00e7in zorunluluk kontrol\u00fc yapabilmeye olanak sa\u011flayan ve bizim olu\u015fturdu\u011fumuz ZorunluAlanAttribute\u2019\u00fc mant\u0131\u011f\u0131m\u0131z\u0131 isterseniz bir ad\u0131m ileri ta\u015f\u0131yal\u0131m. S\u0131n\u0131f alanlar\u0131 i\u00e7in do\u011frulama yapabilme mant\u0131\u011f\u0131m\u0131z\u0131 bir \u00f6nceki makalede yer alan static <strong>ZorunlulukKontrolu<\/strong> s\u0131n\u0131f\u0131 i\u00e7erisindeki <strong>Dogrula<\/strong> metodunda olu\u015fturmu\u015ftuk. Bu yakla\u015f\u0131m\u0131m\u0131zda \u00f6znitelikleri sadece i\u015faretleme amac\u0131yla kullanm\u0131\u015f ve i\u015faretlenmi\u015f alanlar i\u00e7in do\u011frulama i\u015flemini <em>ZorunlulukKontrolu.Dogrula<\/em> metodu i\u00e7erisinde olu\u015fturmu\u015ftuk. \u00d6nceki makalemde sizlerle payla\u015ft\u0131\u011f\u0131m i\u015f mant\u0131\u011f\u0131 i\u00e7in bu yakla\u015f\u0131m do\u011fru olsa da bu durum daha fazla do\u011frulama ihtiyac\u0131n\u0131n oldu\u011fu i\u015f mant\u0131klar\u0131nda bizi dar bo\u011faza sokabilir; \u00e7\u00fcnk\u00fc bu yakla\u015f\u0131mda t\u00fcm do\u011frulama i\u015fi tek bir s\u0131n\u0131fta olmakta\u2026 geni\u015fletilebilir de\u011fil\u2026 Ekip \u00e7al\u0131\u015fmas\u0131nda ayn\u0131 s\u0131n\u0131f \u00fczerinde \u00e7al\u0131\u015fmak zaman zaman sorun olu\u015fturabilir..<\/p>\n\n\n\n<p>&nbsp;&nbsp; Peki bu durumda nas\u0131l bir yakla\u015f\u0131m izlenmeli? Sizlere makalemin ba\u015f\u0131nda da belirtti\u011fim gibi \u00f6znitelikler\u2019e yap\u0131sal olarak bakacak olursan\u0131z birer s\u0131n\u0131ft\u0131rlar. E\u011fer istersek i\u00e7lerine metod ekleyebilir, bu metodlar\u0131 \u00e7a\u011fr\u0131rarak i\u015f yapt\u0131rabiliriz. Bu durumda yap\u0131lacak en ak\u0131ll\u0131ca hareket, do\u011frulama i\u015f mant\u0131\u011f\u0131m\u0131z\u0131 ZorunlulukKontrolu statik s\u0131n\u0131f\u0131 i\u00e7erisinden alarak \u00f6zniteliklere ta\u015f\u0131mak olacakt\u0131r. \u00d6znitelikler i\u00e7erisindeki bu do\u011frulama mant\u0131\u011f\u0131na ula\u015f\u0131p \u00e7al\u0131\u015ft\u0131rabilmek i\u00e7in ise ortak bi kontrat\u0131m\u0131z\u0131n olmas\u0131 gerekecektir. Bu sayede gelen s\u0131n\u0131f\u0131n do\u011frulama kontrat\u0131na uydu\u011funu bilerek ilgili metodunu \u00e7a\u011fr\u0131biliriz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ger\u00e7ek hayattaki bir kontrattan bahsediyorsak, bunun C# d\u00fcnyas\u0131nda bir ka\u00e7 kar\u015f\u0131l\u0131\u011f\u0131 bulunmakta;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> Aray\u00fcz <\/li><li> Temel s\u0131n\u0131f <\/li><li> Abstract temel s\u0131n\u0131f <\/li><\/ul>\n\n\n\n<p>&nbsp; Bu yakla\u015f\u0131mlar\u0131n her birinin kendine g\u00f6re art\u0131lar\u0131 ve eksileri olamas\u0131na kar\u015f\u0131n, bu makale i\u00e7in <strong>abstract temel s\u0131n\u0131f<\/strong>\u2019\u0131 kontrat\u0131m\u0131 belirtmekte kullanaca\u011f\u0131m. Bu sayede hem \u00f6zniteliklerin tan\u0131mlama bilgilerini hem de t\u00fcm do\u011frulama \u00f6zniteliklerimde yapmak isteyebilece\u011fim di\u011fer ortak i\u015fleri tek bir \u00e7at\u0131 alt\u0131nda ger\u00e7ekle\u015ftirebilirim.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Tasar\u0131m olarak t\u00fcm do\u011frulama \u00f6zniteliklerinin abstract base class olarak tan\u0131mlanm\u0131\u015f olan <em>AlanDogrulamaAttribute<\/em> s\u0131n\u0131f\u0131ndan t\u00fcretelim;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"6\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[AttributeUsage(\n    AttributeTargets.Field,\n    AllowMultiple = false,\n    Inherited = true)]\npublic abstract class AlanDogrulamaAttribute : Attribute {\n    internal protected abstract bool Dogrula(object alanDegeri);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; 6. sat\u0131rda tan\u0131mlanan <em>Dogrula<\/em> metodu <em>AlanDogrulamaAttribute<\/em> s\u0131n\u0131f\u0131ndan t\u00fcreyecek t\u00fcm alt s\u0131n\u0131flar taraf\u0131ndan tan\u0131mlanmak zorundad\u0131r. Bu metod, tan\u0131mland\u0131\u011f\u0131 assembly i\u00e7erisinde kullanabilmek ad\u0131na <em>internal<\/em> olarak i\u015faretlenirken farkl\u0131 assembly\u2019ler i\u00e7erisindeki alt s\u0131n\u0131flar taraf\u0131ndan g\u00f6r\u00fcl\u00fcp tan\u0131mlanabilmesi i\u00e7in de <em>protected<\/em> olarak i\u015faretlenmi\u015ftir. \u0130sterseniz bu metodu <em>public<\/em> olarak da tan\u0131mlayabilirsiniz.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png\" alt=\"hiyerarsi\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bu makale i\u00e7in \u00f6rnekledi\u011fim bu abstract temel s\u0131n\u0131f\u0131 geni\u015fleten <strong>ZorunluAlanAttribute<\/strong>, <strong>SabitUzunlukAttribute<\/strong>, <strong>MaksimumDegerAttribute<\/strong> ve <strong>MinimumDegerAttribute<\/strong> s\u0131n\u0131flar\u0131 bulunmakta. Bu d\u00f6rt s\u0131n\u0131f\u0131n konunun kavranmas\u0131 ad\u0131na yeterli olaca\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcyorum. Ger\u00e7ek hayattaki \u00f6rneklerde bundan daha derin bir kal\u0131t\u0131m hiyerar\u015fisi ve \u00f6zniteliklerin tan\u0131mlanmas\u0131 ihtiyac\u0131 olu\u015fabilir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu d\u00f6rt s\u0131n\u0131f i\u015f mant\u0131\u011f\u0131 gere\u011fi ger\u00e7ekle\u015ftirilmesi gereken do\u011frulama kodlar\u0131n\u0131 kendi tan\u0131mlad\u0131klar\u0131 Dogrula metodu i\u00e7inde yapmaktad\u0131rlar. Dolay\u0131s\u0131yla hem kodum daha anla\u015f\u0131l\u0131r, hem de geni\u015fletilmeye haz\u0131r olacakt\u0131r. A\u015fa\u011f\u0131da bu d\u00f6rt s\u0131n\u0131fa ait kodlar\u0131 bulabilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1,7,24,36\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ZorunluAlanAttribute : AlanDogrulamaAttribute {\n    protected internal override bool Dogrula(object alanDegeri) {\n        return (alanDegeri is string &amp;&amp; !string.IsNullOrEmpty(alanDegeri as string)) || alanDegeri != null;\n    }\n}\n\npublic class SabitUzunlukAttribute : AlanDogrulamaAttribute {\n    private long uzunluk;\n\n    public SabitUzunlukAttribute(long uzunluk) {\n        this.uzunluk = uzunluk;\n    }\n\n    protected internal override bool Dogrula(object alanDegeri) {\n        if (alanDegeri is string) {\n            var alanDegeriString = alanDegeri as string;\n            return !string.IsNullOrEmpty(alanDegeriString) &amp;&amp; alanDegeriString.Length == uzunluk;\n        }\n\n        return true;\n    }\n}\n\npublic class MaksimumDegerAttribute : AlanDogrulamaAttribute {\n    private long maksimumDeger;\n\n    public MaksimumDegerAttribute(long maksimumDeger) {\n        this.maksimumDeger = maksimumDeger;\n    }\n\n    protected internal override bool Dogrula(object alanDegeri) {\n        return !(alanDegeri is long) || ((long)alanDegeri) &lt;= maksimumDeger;\n    }\n}\n\npublic class MinimumDegerAttribute : AlanDogrulamaAttribute {\n    private long minimumDeger;\n\n    public MinimumDegerAttribute(long minimumDeger) {\n        this.minimumDeger = minimumDeger;\n    }\n\n    protected internal override bool Dogrula(object alanDegeri) {\n        return !(alanDegeri is long) || ((long)alanDegeri) >= minimumDeger;\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Payla\u015ft\u0131\u011f\u0131m bu kodlarda detayl\u0131 bir do\u011frulama ve hata kontrol\u00fc yap\u0131lmam\u0131\u015f olup, makalenin ana konusunun anla\u015f\u0131lmas\u0131 ad\u0131na temel kontrolleri yapan kodlar eklenmi\u015ftir. Ger\u00e7ek hayatta daha detayl\u0131 do\u011frulama ve hata kontrol\u00fc yap\u0131lmas\u0131 gerekecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Do\u011frulama \u00f6zniteliklerinde kullan\u0131lacak olan kontrat\u0131m\u0131n ve bu kontrata uyan s\u0131n\u0131f tan\u0131mlar\u0131m\u0131n ard\u0131nda en \u00f6nemli nokta olan <em>ZorunlulukKontrolu.Dogrula<\/em> metodu i\u00e7erisinde kodumu yeni i\u015f mant\u0131\u011f\u0131m \u00e7er\u00e7evesinde g\u00fcncellemek;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"10-20\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public static class ZorunlulukKontrolu {\n    public static bool Dogrula(object dogrulanacakOrnek) {\n        Type dogrulamacakTur = dogrulanacakOrnek.GetType();\n\n        FieldInfo[] dogrulanacakTurAlanlari = dogrulamacakTur.GetFields(\n                                                BindingFlags.Public |\n                                                BindingFlags.Instance);\n\n        foreach (FieldInfo dogrulanacakTurAlani in dogrulanacakTurAlanlari) {\n            object[] alanDogrulamaOznitelikleri = dogrulanacakTurAlani.GetCustomAttributes(typeof(AlanDogrulamaAttribute), true);\n\n            if (alanDogrulamaOznitelikleri.Length != 0) {\n                object alanDegeri = dogrulanacakTurAlani.GetValue(dogrulanacakOrnek);\n\n                foreach (AlanDogrulamaAttribute alanDogrulamaOzniteligi in alanDogrulamaOznitelikleri) {\n                    if (!alanDogrulamaOzniteligi.Dogrula(alanDegeri)) {\n                        return false;\n                    }\n                }\n            }\n        }\n\n        return true;\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u00d6nceki makalemde payla\u015ft\u0131\u011f\u0131m <em>ZorunlulukKontrolu.Dogrula<\/em> metodunda farkl\u0131 olarak bu sefer alan \u00fczerinde <em>AlanDogrulamaAttribute<\/em> \u00f6zniteli\u011fi aranmakta. \u00dcstelik bu yap\u0131l\u0131rken yukar\u0131da payla\u015ft\u0131\u011f\u0131m ve AlanDogrulamaAttribute s\u0131n\u0131f\u0131ndan t\u00fcretilen di\u011fer s\u0131n\u0131flarda gelebilmekte. Buradaki p\u00fcf noktas\u0131; reflection ile bir alan \u00fczerinden \u00f6zel \u00f6zniteliklerin sorgulanmas\u0131 durumunda bu \u00f6znitelikten t\u00fcretilen \u00f6zniteliklerinde getirilebiliyor olmas\u0131d\u0131r. Ard\u0131ndan bir do\u011frulama s\u0131n\u0131f\u0131 bulunmas\u0131 durumda bu s\u0131n\u0131f i\u00e7erisinde bulunan Dogrulama metodu \u00e7a\u011f\u0131r\u0131lmakta. \u0130lk ba\u015far\u0131s\u0131z do\u011frulamada bu metod <em>false<\/em> de\u011ferini d\u00f6necektir. Herhangi bir do\u011frulama \u00f6zniteli\u011fi bulunamamas\u0131 ya da t\u00fcm do\u011frulamalardan ge\u00e7ilmesi durumunda ise <em>true<\/em> de\u011feri d\u00f6necektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ogrenci s\u0131n\u0131f\u0131m\u0131z i\u00e7erisinde \u00f6grenci numaras\u0131n\u0131n tutulaca\u011f\u0131 long t\u00fcr\u00fcnden yeni bir alan ekleyerek bu alan\u0131n de\u011ferinin 199800001 ile 201099999 aras\u0131nda olmas\u0131 durumunu do\u011frulamak istersek s\u0131n\u0131f\u0131m\u0131z a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fclecektir;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"8-10\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class Ogrenci {\n    [ZorunluAlan]\n    public string Adi;\n\n    [ZorunluAlan]\n    public string Bolum;\n\n    [MaksimumDeger(201099999)]\n    [MinimumDeger(199800001)]\n    public long OgrenciNumarasi;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu yeni yap\u0131yla birlikte art\u0131k \u00f6znitelikler sadece i\u015faretleme i\u00e7in kullan\u0131may\u0131p, i\u00e7lerinde hem veri hem de i\u015f mant\u0131\u011f\u0131 bar\u0131nd\u0131ran ak\u0131ll\u0131 s\u0131n\u0131flar haline gelmi\u015f durumda.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu yeni yap\u0131 bize daha fazla esneklik sunarken, 3.parti k\u00fct\u00fcphanelerin de <em>AlanDogrulamaAttribute<\/em> s\u0131n\u0131f\u0131n\u0131 t\u00fcreterek yeni do\u011frulama \u00f6znitelikler olu\u015fturabilmesine de olanak sa\u011flamaktad\u0131r.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Bir \u00f6nceki makalemde sizlere \u00f6znitelik (attribute) ve yans\u0131ma (reflection) konular\u0131nda bahsetmi\u015ftim. Her zaman dedi\u011fim gibi, bu ikili bir arada ger\u00e7ekten \u00e7ok \u00f6nemli bir g\u00fc\u00e7 haline gelmekte. Bu ikilinin kullan\u0131m\u0131na dair o kadar fazla \u015fey s\u00f6ylenebilir ki, tek makale buna hi\u00e7 bir zaman yetmeyecektir. Bu sebeple ikinci bir makale ile konuyu biraz daha derinle\u015ftirmek istedim&#8230;.<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-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":[105,41,74],"class_list":["post-33091","post","type-post","status-publish","format-standard","hentry","category-csharp","category-turkce","tag-attribute","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>\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -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\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2 - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Bir \u00f6nceki makalemde sizlere \u00f6znitelik (attribute) ve yans\u0131ma (reflection) konular\u0131nda bahsetmi\u015ftim. Her zaman dedi\u011fim gibi, bu ikili bir arada ger\u00e7ekten \u00e7ok \u00f6nemli bir g\u00fc\u00e7 haline gelmekte. Bu ikilinin kullan\u0131m\u0131na dair o kadar fazla \u015fey s\u00f6ylenebilir ki, tek makale buna hi\u00e7 bir zaman yetmeyecektir. Bu sebeple ikinci bir makale ile konuyu biraz daha derinle\u015ftirmek istedim....Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2010-09-10T20:50:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.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=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2\",\"datePublished\":\"2010-09-10T20:50:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\"},\"wordCount\":1224,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png\",\"keywords\":[\"Attribute\",\"C#\",\"Reflection\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\",\"url\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\",\"name\":\"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2 - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png\",\"datePublished\":\"2010-09-10T20:50:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -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":"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -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\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/","og_locale":"en_US","og_type":"article","og_title":"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2 - Fatih Boy","og_description":"&nbsp;&nbsp; Bir \u00f6nceki makalemde sizlere \u00f6znitelik (attribute) ve yans\u0131ma (reflection) konular\u0131nda bahsetmi\u015ftim. Her zaman dedi\u011fim gibi, bu ikili bir arada ger\u00e7ekten \u00e7ok \u00f6nemli bir g\u00fc\u00e7 haline gelmekte. Bu ikilinin kullan\u0131m\u0131na dair o kadar fazla \u015fey s\u00f6ylenebilir ki, tek makale buna hi\u00e7 bir zaman yetmeyecektir. Bu sebeple ikinci bir makale ile konuyu biraz daha derinle\u015ftirmek istedim....Read More","og_url":"https:\/\/fatihboy.com\/en\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/","og_site_name":"Fatih Boy","article_published_time":"2010-09-10T20:50:26+00:00","og_image":[{"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png","type":"","width":"","height":""}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2","datePublished":"2010-09-10T20:50:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/"},"wordCount":1224,"commentCount":3,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png","keywords":["Attribute","C#","Reflection"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/","url":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/","name":"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -2 - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png","datePublished":"2010-09-10T20:50:26+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/09\/hiyerarsi_thumb.png"},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/oznitelikler-ve-reflectionla-csharp-dilini-ihtiyaclariniz-dogrultusunda-genisletin-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"\u00d6znitelikler ve Reflection\u2019la C# Dilini \u0130htiya\u00e7lar\u0131n\u0131z Do\u011frultusunda Geni\u015fletin -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\/33091","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=33091"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33091\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}