lucene-lucene-net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christopher Currens (Created) (JIRA)" <j...@apache.org>
Subject [Lucene.Net] [jira] [Created] (LUCENENET-469) Convert Java Iterator classes to implement IEnumerable<T>
Date Tue, 24 Jan 2012 06:37:41 GMT
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 3.0.3, Lucene.Net 2.9.4g
         Environment: all
            Reporter: Christopher Currens
             Fix For: Lucene.Net 3.0.3


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

        

Mime
View raw message