-1
편리한 확장 메서드를 사용하여 LINQ 쿼리를 실행하려는 BindingList <T>의 사용자 지정 하위 클래스가 있습니다. 예를 들면 :BindingList의 사용자 정의 하위 클래스 인 IEnumerable <T> 확장 메서드에 액세스하려면 어떻게해야합니까? <T>?
public int GetSum(MyList<T> list)
{
return list.Sum(x => x.Value);
}
그러나 컴파일러는 분명히하는 그 것이다, IEnumerable<T>
로 list
을 인식하지 못하기 때문에이 작품 있기 때문에, Sum
를 해결할 수없는 불평 :
public int GetSum(MyList<T> list)
{
return ((IEnumerable<T>)list).Sum(x => x.Value);
}
누구나가 못 생기고 불필요한 캐스트를 피할 수있는 영리한 방법?
그럴 것입니다 .... 형식 상 여러 개의 IEnumerable 구현이 있다고 생각합니까? –
Dan
@Dan 귀하의 합계 (x => x.Value) x.Value는이 표현식이 모든 객체에서 무언가에 대해 평가할 수있는 기능을 제거합니다. 제대로 평가하려면 Value 속성이 있어야하는 형식을 지정하고 있습니다. Sum 확장 메서드의 형식 인수 내에 형식을 지정하지 않으면 식을 계산하는 방법을 알 수 없습니다. –