Tôi đã viết một lớp thực hiện IEnumerable<T>
. Tôi có một phương thức trả về MyClass
. Nếu tôi cố gắng yield return
từ bên trong phương thức đó, trình biên dịch cho tôi biết "... không thể là khối lặp bởi vì ... không phải là loại giao diện trình lặp".Làm cách nào để xác định loại giao diện trình lặp?
Vì vậy, làm cách nào tôi có thể xác định loại trình vòng lặp giao diện của riêng mình? Nó có phải là "trừu tượng" (không thể có bất kỳ phương pháp nào được định nghĩa) không?
Những gì tôi muốn làm là viết một loạt các phương pháp có thể chuỗi, vì vậy mọi phương thức sẽ trả về một thể hiện của MyClass
. Nhưng tôi cần MyClass
để được một số loại enumerable. Thay vì sử dụng một số loại dữ liệu cơ bản, tôi đã hy vọng tôi chỉ có thể yield return
ở mọi nơi.
@Oded:
class SharpQuery : IEnumerable<HtmlNode>
{
public SharpQuery Find(string selector)
{
foreach (var n in this)
{
// filter the results
yield return node;
}
}
}
Bạn có thể đăng các bit liên quan của mã không? – Oded