回答
反射是類型提供自己信息的能力。例如,一個程序集可以告訴你它包含了什麼,一個類型可以告訴你它的方法,屬性等等。
動態提供這些信息在很多方面都很有用。一個簡單的例子就是Web服務使用的元數據 - 當一個人「消費」一個Web服務時,會爲其客戶端生成一個代理類。此代理是從WSDL文檔生成的,並且通常是通過反射生成的類型元數據生成的。
另一個簡單的例子是動態加載類型以執行某些工作單元。我所從事的一個項目利用反射來從數據庫加載「規則」以應用於系統中的輸入。
通過反射,您的代碼可以調用編譯代碼時不知道的方法和屬性。其中一個使用此類的內置類是XmlSerializer。您可以將任何要轉換爲XML的對象傳遞給它。它詢問對象它的所有屬性都使用了反射,然後能夠生成一個包含所需元素來表示對象的XML文檔。
反射允許您編寫可以檢查有關代碼本身的各個方面的代碼。
它可以讓您做簡單的事情,如:
檢查對象在運行時的類型(簡單的調用
typeof()
例如)檢查對象的屬性在運行時改變一種方法的行爲(.NET中的各種序列化方法)
更復雜的任務如:
- 在運行時加載程序集,查找特定類,確定它是否與給定接口匹配,以及動態調用某些成員。
較早的是更爲常見的用法。後者對於爲其應用程序的插件架構開發人員或希望在運行時交換程序集的人員有所幫助,具體取決於配置更改。
反射是一種讓您以編程方式在運行時發現類型的方法。這是非常重要的,因爲.NET語言是強類型的。能夠訪問元數據非常有用。
現在的一件大事(流暢的接口/適配器)很大程度上依賴於反射。特別是,靜態反射非常大。如果你想看到具體的例子和靜態反射的一個很好的解釋,請上網:
http://jagregory.com/writings/introduction-to-static-reflection/
http://www.lostechies.com/blogs/gabrielschenker/archive/2009/02/03/dynamic-reflection-versus-static-reflection.aspx
當然,這反映在一般的一小部分。如果您想了解更多關於反射的一般用法的信息,請查看Apress Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition,第16章。它深入研究了.NET類型系統以及在庫和運行時如何使用它。
反射可以幫助您進行元編程,這無疑是最酷的編程技術之一。谷歌元編程瞭解更多信息。
一個反思的好處是,它可以讓您保存在數據集設計就像一個事務中的所有變化,SQL
反思是在asp.net提供強大的命名空間。通過使用它,我們可以創建動態對象運行時並調用它,它主要用於開發框架類型應用程序。
反射不屬於ASP.NET或任何其他.NET技術,因爲它是調查無論您使用的項目類型如何,都可以在運行時裝配一個Assembly。 – graumanoz 2017-02-06 07:11:46
- 1. 反射有什麼好處?
- 2. Cakephp,它有什麼好處?
- 3. Assert() - 它有什麼好處?
- 4. C#MVC:使用Modelbinders有什麼好處?
- 5. 爲什麼要使用websocket,使用它有什麼好處?
- 6. `cache_line_align_`的作用是什麼?它有什麼好處?
- 7. 什麼是代碼卡塔,它有什麼好處?
- 8. 這個typedef是什麼意思,它有什麼好處?
- 9. 什麼是TrafficStats的好處?
- 10. Struts的好處是什麼
- 11. 什麼是CIDR的好處?
- 12. 什麼是PowerShell的好處?
- 13. jQuery FancyBox,它有什麼好處?
- 14. Z Shell「autoload」builtin - 它有什麼好處?
- 15. Django inlineformsetfactory - 它有什麼好處?
- 16. 元編程,它有什麼好處?
- 17. 屬性後臺 - 它有什麼好處?
- 18. Lucene SpanQuery - 它有什麼好處?
- 19. Flex + Java EE它有什麼好處?
- 20. 元組有什麼好處?
- 21. StringBuilders有什麼好處?
- 22. 粘液有什麼好處?
- 23. AJAX有什麼好處?
- 24. 「svn:externals」有什麼好處?
- 25. cURL有什麼好處?
- 26. ConcurrentSkipListMap有什麼好處?
- 27. VS2010 SP1有什麼好處?
- 28. AnkhSVN有什麼好處?
- 29. JRebel有什麼好處?
- 30. WTP有什麼好處
可能的重複:http://stackoverflow.com/questions/1897712 ... http://stackoverflow.com/questions/1859902 – 2010-06-23 12:35:57
[反射。我們可以使用它來實現什麼?](http://stackoverflow.com/questions/1897712/reflection-what-can-we-achieve-using-it) – 2010-06-23 12:39:00
對所有人:我仍然無法得到,我是如何得到好處的。你們中的任何一個人都可以引用一個最簡單的例子:編碼幫助代碼更具可重用性和功能方面的優勢 – 2010-06-23 12:53:53