我在互聯網上關於反射的紅色,我也理解了一些代碼,但問題是我真的無法得到什麼是反射的用途,我應該在哪裏使用它。 可能有些人請使用示例向我解釋這一點。asp.net中的反射
回答
提供示例,我不能做比谷歌更好的工作。如果你可以閱讀這個頁面,你可以谷歌。但用法包括:
1)WPF:所有的結合是基於反射,這樣的框架使用反射來德做工作。它是如何綁定到您在XAML中定義的屬性的。
2)Pluggins:加載的組件,並通過類型循環和或許創建特定類型的對象和在其上運行的方法。
3)ASP.NET MVC:路由是基於反射
在System.Reflection命名空間用的System.Type的類,在一起,使您獲得信息關於加載的程序集及其中定義的類型,例如類,接口和值類型。您還可以使用反射在運行時創建類型實例,並調用和訪問它們。有關反射特定方面的主題,請參閱本概述末尾的「相關主題」。
例如,假設您有一個方法需要一個參數類型爲object的方法。您知道該對象有一個名爲Name
的屬性,但您不知道對象的具體類型,因此您無法投射它。但是,使用反射,你仍然可以得到在該屬性:
public string GetName(object o)
{
string name = (string) o.GetType().GetProperty("Name").GetValue(o, null);
return name;
}
簡稱:
反思是你來自哪裏,代碼可以查詢的名稱屬性或方法的對象的一種手段。
例如在APS.NET頁面使用了用戶控件可以檢查母版具有用於連接到數據庫的DB屬性,如果因此使用它,否則創建自己的連接。
這樣,它不會創建不必要的連接,同時在沒有主控的頁面中仍然易於使用。
你在哪裏「應該」使用它是你需要使用它。反射是其中一種情況,如果你不需要它,你不會注意到它的存在,但是當你需要它時,你很高興它在那裏。
簡而言之,反射就是在運行時發現和檢查代碼的一種方式,它在編譯時不可用。如果您的應用程序需要的所有內容都可以在編譯時使用,那麼您將永遠不需要反思。但是,如果您正在編寫易於擴展和修改的應用程序,那麼您將會使用大量反思。
下面是一個示例:Workflow Foundation 4.爲了創建工作流程組件,您通常必須深入瞭解WF4如何運行,以便在運行時調用CacheMetadata方法時正確配置組件。爲了便於創建組件,WF團隊實現了CacheMetadata的基本方法,以便它使用反射來檢查組件是如何實現的(它具有哪些In和OutArguments和Variables)。通過這種方式,基本實現可以在運行時正確配置活動,而無需擡起手指。這是基礎Activity類在幾個月或幾個月前編譯時無法完成的,因爲您的Activity尚不存在。
- 1. Asp.net的AutoEventWireup和反射?
- 2. Asp.Net反射計數屬性
- 3. ASP.NET核心反射迪
- 4. GLSL中的反射映射
- 5. ASP.NET MVC的JsonResult使用反射
- 6. 幫助asp.net mvc的反射和屬性
- 7. JavaScript中的反射
- 8. python中的反射
- 9. Java中的反射
- 10. Android中的反射?
- 11. C++中的反射
- 12. TDD中的反射
- 13. 使用反射調用ASP.NET Web服務
- 14. 從反射屬性中檢索反射類型中的值
- 15. 的Java反射
- 16. IQueryable的反射
- 17. 的GetValue反射
- 18. ASP.NET MVC中的數據服務反射提供程序
- 19. 單反的.NET反射器
- 20. 在硒中的java反射
- 21. adobe flex中的類反射
- 22. .NET中的深度反射
- 23. Three.js中的加法反射
- 24. 在java中的反射?
- 25. 在java中的反射
- 26. WinRT中的反射IsAssignableFrom
- 27. scala中的Java類反射
- 28. Silverlight中的反射限制
- 29. Windows Phone中的反射
- 30. Struts 2中的反射
這裏是一組關於這個主題的問題和答案:http://stackoverflow.com/questions/tagged/reflection?sort=votes&pagesize=50 – Andrey 2010-10-25 12:32:21