메서드가 /, +, -, * 연산자를 구현하는 형식에서만 작동하도록합니다. 이것을하기위한 "깨끗한"방법이 있습니까?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 같은 값 유형은 "T : struct"이지만 공통된 인터페이스 또는 기본 유형은 없습니다.
관련 문제
- 1. IEnumerable <T>을 반환하는 IEnumerable <T>에 대한 확장 메서드 정의?
- 2. IEnumerable 용 확장 메서드 <Enum>?
- 3. Enum의 IEnumerable 확장 메서드
- 4. 목록이 <T>인데 여기서 T는 익명의 대리인입니까?
- 5. C# 구문 도움말 -> Get <T>() 여기서 T는
- 6. IList <T> 여기서 T는 일반 클래스입니다.
- 7. Linq IEnumerable 확장 메서드 - 성능을 향상시키는 방법?
- 8. IEnumerable <KeyValuePair>에서 일반 GetOnlyKeys에 대한 확장 메서드 <int, string>>
- 9. IEnumerable 메서드 디버깅
- 10. IEnumerable - 내 확장 방법
- 11. C# 스레드 안전 확장 메서드
- 12. ZipWithRatio 확장 메서드 구현을위한 도움말
- 13. C# IEnumerable에 AddItem의 확장 메서드 <T>
- 14. List에있는 Datagridview 데이터 소스 정렬 <T> 여기서 T는 익명입니다.
- 15. 문제 관계 <여기서 =
- 16. Linq에 확장 메서드
- 17. ControlCollection에 확장 메서드 최적화
- 18. 된 IQueryable <T> 확장 메서드
- 19. C# 익명 메서드 변수 범위 문제가 IEnumerable <T>
- 20. asp.net의 <% = expression %>에 해당하는 메서드?
- 21. C# Count() 확장 메서드 성능
- 22. 캐스팅 IEnumerable <Derived> to IEnumerable <BaseClass>
- 23. 확장 메서드 결합
- 24. 언제 IEnumerable 확장 메서드에 대해 <T> 형식을 지정해야합니까?
- 25. 제네릭 IEnumerable <SelectListItem> 확장 방법을 작성하는 방법
- 26. IEnumerable <T>에 Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert를 사용할 수 있습니까?
- 27. Enumerable <T>의 인스턴스를 캐스팅하는 방법. (술부)를 IEnumerable <T>에?
- 28. 일반 IEnumerable <T> 주어진 IEnumerable 및 멤버 데이터 형식
- 29. ReaderWriterLockSlim 확장 메서드 성능
- 30. 일반 T는,