我想要一個方法僅適用於實現/,+, - ,*運算符的類型。有沒有「乾淨」的方式來做到這一點?在IEnumerable <T>上定義擴展方法,其中T是特定種類的類型?
1
A
回答
2
這將需要一個接口,如IArithmetic。
不幸的是,目前這並不奏效。然而,這是一個highly requested feature。
有some workarounds,通常需要使用第二個通用參數,但大多數不會與IEnumerator<T>
一起使用。
0
您可以在類型參數上定義constraints。因此,您可以要求T實現一個接口:
public static class Classy
{
public static void Extension<T>(this IEnumerable<T> Ninjas)
where T : IMathStuff
{
}
}
這要求所有T實現IMathStuff。現在,如果您無法將操作員安裝到IMathStuff界面中,則可以將界面留爲空白(Marker Interface),並僅將其應用於執行操作員的類。
這種假定您正在使用所有自定義類而不是內置類型。這是一個不完全支持的解決方法。
0
有沒有一種乾淨的方式來做到這一點。您將需要實現IEnumberable < int>,IEnumberable < float> ...等
0
不在編譯期。我想,你必須使用反思。
其中很多值類型,如int和long,「where T:struct」,但沒有它們共有的接口或基類型。
相關問題
- 1. 檢查類型<T>是否擴展了特定的類
- 2. 爲IEnumerable定義擴展方法<T>它返回IEnumerable <T>?
- 3. 委託方法參數從IEnumerable <T>到特定類型
- 4. 什麼時候必須爲IEnumerable擴展方法指定類型<T>?
- 5. 擴展類中未定義的方法
- 6. IEnumerable <T, int>,Arity和泛型類型定義
- 7. 如何在F#中定義T []的類型擴展?
- 8. Set的擴展其中元素是特定類型的數組
- 9. 如何確定一種方法「是否是類型的擴展方法?」
- 10. 多種類型的擴展方法
- 11. 擴展方法必須在非泛型靜態類中定義
- 12. 是否可以找到某種特定類型的SomeMethod <T>的用法?
- 13. 曖昧的IQueryable <T>。凡和IEnumerable <T>。凡在擴展方法
- 14. 當類型參數爲IEnumerable <T>時,如何將擴展方法附加到泛型類?
- 15. 擴展方法上的IEnumerable
- 16. VisualBasicValue <T>:訪問自定義類及其方法\性能
- 17. 指定泛型類,其中T應該是其他類型的
- 18. 擴展類型定製類
- 19. 方法createEntityGraph(類<>)是未定義的類型的EntityManager
- 20. 類型T的泛型其中T具有特定屬性
- 21. 是否有可能沒有定義兩個泛型類型的泛型類型定義的擴展方法,並返回另一個泛型類型<>
- 22. 方法定義中的類型參數<T>是什麼意思?
- 23. 自定義集合擴展列表<T>添加方法
- 24. 如何獲取IQueryable <T>擴展方法而不是IEnumerable <T>擴展?
- 25. 方法buildActivity(類<MainActivity>)是未定義的類型Robolectric
- 26. 比較IEnumerable類型的<T>
- 27. 如何定義泛型類的擴展方法?
- 28. 如何使用LinkedList <T> .Find()方法其中T是用戶定義的數據類型(對象)
- 29. 的IEnumerable <T>作爲返回類型WCF方法
- 30. 字典類型的擴展,其中鍵和值具有特定類型