İnsanların yansımayı gereksiz yere kullanma konusunda ihtiyatlı olmasının nedeni performans değildir: evet, yansımayı kullanmanın bir yükü vardır, ancak çoğu zaman problemi çözmeden karşılaştırılabilir karmaşıklıkla farklı bir yaklaşım gerektirir ve bunu yapmasa bile yükü nadiren önemli (özellikle uygulama düzeyinde geliştirme için).
Yansımayı kullanarak, normalde kaynak kodu hakkında yapabileceğiniz bazı önemli varsayımlar bozulur ve "Tüm Referansları Bul" gibi araçlar güvenilir bir şekilde çalışmaz. Yansıma, temel olarak, derleyicinin zorladığı tür güvenliğinin çoğunu, örneğin C # ve bir tür sisteminin normal olarak derleyici hatalarına çevirip çevireceği programlama hatalarının çoğunu kaldırır, şimdi en iyi veya çok kötü hatalarda çalışma zamanı hataları haline gelir.
Öyleyse neden insanlar yansıma kullanıyor? Basitçe söylemek gerekirse, yukarıda açıklanan sorunlara rağmen, çok değerli bir araçtır. Yansıtma ile, dinamik programlamanın bazı faydaları C # gibi statik, kesinlikle yazılan bir dilde olabilir ve dinamik programlama dilleri son zamanlarda özellikle web programlama - PHP, Javascript ve oldukça belirgin Python alanında değerlerini göstermiştir. , hepsi dinamik yazmayı kullanır ve web programlama için uygun olduğunu kanıtlamıştır. Ancak dil hala C # olduğundan, uygulamanızın çoğunu kesin olarak yazılmış bir OOP deyiminde tutmayı ve dinamik davranışın yansıma ile gerçekten fark yarattığı küçük kısmı yazmayı seçebilirsiniz.
Tipik bir örnek, yöntemleri web hizmeti çağrıları olarak açmanız gerektiğinde (henüz .NET'te yerleşik olmayan bir protokol kullanarak). Katı tip OOP yaklaşımı işe yarıyor, ancak aşırı kısıtlayıcı ve sakar. Ancak, çağrıları yöntemlere ve anahtar / değer çiftlerini bağımsız değişkenlere eşlemek için yansıma kullanırsanız, böyle bir web hizmeti için sıhhi tesisatı bir kez yazabilir ve daha sonra istediğiniz herhangi bir sınıfta kullanabilirsiniz.