title: Multiple enumerators for an IEnumerable
body: <p>I have a custom made collection that has many modes of objects generations inside of it.<br>
  It can generate everything, one object at a time or N objects at a time.<br>
  I would like to have the option to switch between implementations of generation on runtime, and even maybe create new ones.<br>
  I am looking for something with this kind of syntax:  </p>
  
  <pre><code>foreach(var obj in myCollection.EnumerateAs(new LazyEnumerator())
  {
     // ...
  }
  </code></pre>
  
  <p>My problems are:<br>
  I don't know what does <code>EnumerateAs()</code> return? I am assuming that it's IEnumerator but will it still be the enumerator of my list?<br>
  Does LazyEnumerator inherit from IEnumerator?<br>
  How is it aware of myCollection? </p>