[
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