6
A
回答
6
我更喜歡使用PropertyInfo.GetIndexParameters
:
var indexers = targetType.GetProperties(bindingFlags)
.Where(p => p.GetIndexParameters().Any());
.Select(p => p.GetGetMethod());
現在indexers
爲符合bindingFlags
給出指定BindingFlags
該索引的干將的IEnumerable<MethodInfo>
。
注意如何代碼讀起來就像從targetType
,得到匹配bindingFlags
的性質,採取那些索引器,然後投射到吸氣。它比使用魔術字符串"get_Item"
要神祕得多,並且很容易處理多個索引器。
如果你知道只有一個,你當然可以使用Single
。如果您正在尋找特定的一個,您可以相應地檢查GetIndexParameters
的結果。
2
正確的方法是檢索該類的DefaultItemAttribute。它具有索引器屬性的名稱。它不一定是「Item」,VB.NET等語言允許指定任何屬性作爲索引器。 Jason的代碼也會失敗,可能會有多個索引屬性。但只有一個默認值。
相關問題
- 1. 獲得一個lambda表達式的方法信息
- 2. String.Split方法在vb.net中優化方式
- 3. 方法優化
- 4. 優化方法
- 5. 優化arrayRotateLeft方法
- 6. 優化equals()方法
- 7. Java方法優化
- 8. 最優雅的方式來獲得pandas.df_dummies
- 9. 從服務器獲得更新結果的優化方式
- 10. 最優化的方式來獲得所有記錄比上月
- 11. LINQ to Entities無法識別方法'System.Windows.Forms.DataGridViewCell get_Item(Int32)'方法
- 12. LINQ to Entities無法識別方法'System.String get_Item(System.String)'方法
- 13. 如何在彈簧啓動1.3中的Interceptor preHandle方法獲得方法信息
- 14. 以編程方式獲取Outlook信息
- 15. Corona SDK:圖像格式優化/信息?
- 16. 無法優化方法
- 17. 圖形API太慢 - 其他方式獲得用戶信息
- 18. 以編程方式獲得Linux設備資源信息
- 19. 以編程方式獲得Windows 8系統信息
- 20. 從AST獲取方法調用信息
- 21. 重寫setter方法,並獲取信息
- 22. 如何獲取方法詳細信息?
- 23. 獲取Enumerable.DefaultIfEmpty的方法信息
- 24. 如何獲得非通用轉換方法信息?
- 25. 任何獲得有關io_service的附加信息的方法
- 26. LINQ to Entities不識別方法get_Item(Int32)'方法
- 27. 方法信息返回類型信息
- 28. 格式化用法信息
- 29. 無法通過快遞方式從郵政方式獲取信息
- 30. MVC Post方法沒有從get方法獲取任何信息?
我想MethodInfo,而不是PropertyInfo。 – smartcaveman 2011-02-10 01:01:45
@smartcaveman:哇。對我上面給出的內容使用PropertyInfo.GetGetMethod。 – jason 2011-02-10 01:59:39