मैंने एक कक्षा लिखी है जो IEnumerable<T>
लागू करती है। मेरे पास एक विधि है जो MyClass
लौटाती है। अगर मैं उस विधि के भीतर से yield return
करने का प्रयास करता हूं, तो संकलक मुझे बताता है "... एक इटरेटर ब्लॉक नहीं हो सकता है क्योंकि ... एक इटरेटर इंटरफ़ेस प्रकार नहीं है"।एक इटरेटर इंटरफ़ेस प्रकार को परिभाषित करने के लिए कैसे?
तो, मैं अपना इंटरफ़ेस इटरेटर प्रकार कैसे परिभाषित कर सकता हूं? क्या इसे "अमूर्त" होना चाहिए (क्या कोई तरीका परिभाषित नहीं किया जा सकता है)?
मैं जो करना चाहता हूं वह श्रृंखला योग्य तरीकों का एक समूह लिखना है, इसलिए प्रत्येक विधि को MyClass
का उदाहरण वापस करना चाहिए। लेकिन मुझे किसी प्रकार की गणना करने के लिए MyClass
की आवश्यकता है। कुछ अंतर्निहित डेटा प्रकार का उपयोग करने के बजाय, मैं उम्मीद कर रहा था कि मैं हर जगह yield return
कर सकता हूं।
@Oded:
class SharpQuery : IEnumerable<HtmlNode>
{
public SharpQuery Find(string selector)
{
foreach (var n in this)
{
// filter the results
yield return node;
}
}
}
क्या आप अपने कोड के प्रासंगिक बिट पोस्ट कर सकते हैं? – Oded