메서드 IEnumerator<T>
을 재정의하는 데 도움이 필요합니다. 열거 중에 dictionary.Values와 같은 요소 만 반환하는 사전 클래스가 필요합니다. foreach에서는 foreach가 IEnumerator<T>
대신 IEnumerator
을 사용하지만 LINQ 메서드는 내 클래스의 인스턴스에서 작동하지 않으므로 foreach에서는 작동합니다. 내가 linq 메서드를 호출하려고하면 소스 유형에 대한 쿼리 패턴 구현을 찾을 수 없습니다. '어디서'를 찾을 수 없습니다.C# 재정의 메서드
public abstract class SpecialDictionary : Dictionary<TKey, MyClass>, IEnumerable<MyClass>
{
public Add(MaClass item)
{
Add(item.Id, item);
}
new public IEnumerator<MyClass> GetEnumerator()
{
return this.Values.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
id로 요소에 빠르게 액세스 할 수있는 항목 모음이 필요합니다. 모든 요소에는 Guid ID가 있습니다. 이것은 나에게 좋은 생각 인 것 같았지만이 솔루션에 대한 귀하의 제안을 환영합니다.
방금'this.Values'을 반환 할 수 없습니다 나는 당신의 반환 형식은'IEnumerable을해야한다 생각' –
_ "하지만 LINQ 방법이 작동하지" _ - 항상 (일어나지 않는) 일이나 오류 메시지 등을 설명하십시오. 우리를 추측하지 마십시오. –
GetEnumerator() 전에 'new'를 제거한 다음 추적 기록을 읽습니다. 이것이 흔적의 시작입니다. –