[ https://issues.apache.org/jira/browse/LUCENENET-469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christopher Currens updated LUCENENET-469: ------------------------------------------ Fix Version/s: (was: Lucene.Net 3.0.3) This requires too much of an API change to implement in 3.0.3. Unassigning from 3.0.3, and we can revisit it in a later release. > Convert Java Iterator classes to implement IEnumerable<T> > --------------------------------------------------------- > > Key: LUCENENET-469 > URL: https://issues.apache.org/jira/browse/LUCENENET-469 > Project: Lucene.Net > Issue Type: Sub-task > Components: Lucene.Net Contrib, Lucene.Net Core > Affects Versions: Lucene.Net 2.9.4, Lucene.Net 2.9.4g, Lucene.Net 3.0.3 > Environment: all > Reporter: Christopher Currens > > The Iterator pattern in Java is equivalent to IEnumerable in .NET. Classes > that were directly ported in Java using the Iterator pattern, cannot be used > with Linq or foreach blocks in .NET. > {{Next()}} would be equivalent to .NET's {{MoveNext()}}, and in the below > case, {{Term()}} would be as .NET's {{Current}} property. In cases as below, > it will require {{TermEnum}} to become an abstract class with {{Term}} and > {{DocFreq}} properties, which would be returned from another class or method > that implemented {{IEnumerable<TermEnum>}}. > {noformat} > public abstract class TermEnum : IDisposable > { > public abstract bool Next(); > public abstract Term Term(); > public abstract int DocFreq(); > public abstract void Close(); > public abstract void Dispose(); > } > {noformat} > would instead look something like: > {noformat} > public class TermFreq > { > public abstract Term { get; } > public abstract int { get; } > } > public abstract class TermEnum : IEnumerable<TermFreq>, IDisposable > { > // ... > } > {noformat} > Keep in mind that it is important that if the class being converted > implements {{IDisposable}}, the class that is enumerating the terms (in this > case {{TermEnum}}) should inherit from both {{IEnumerable<T>}} *and* > {{IDisposable}}. This won't be any change to the user, as the compiler > automatically calls {{IDisposable}} when used in a {{foreach}} loop. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira