C# -> CLI (ICollection<T> und yield)



  • Ich möchte einen vorhanden C#-Code nach CLI portieren (T ist Platzhalter). Geerbt wird von ICollection und der zu implementierende Problemfall ist der Enumerator. Im Enumerator ist dann auch noch ein yield enthalten.

    public class AccessControlEntry : ICollection<T>
    {
      public IEnumerator<T> GetEnumerator()
      {
        int current = (int)T.GenericAll;
        for (int col = (int)this.rights; col != 0; col = col >> 1, current = current << 1)
        {
          if ((col & 1) == 1)
          {
            yield return (T)current;
          }
        }
      }
    
      System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
      {
        return (System.Collections.IEnumerator)this.GetEnumerator();
      }
    }
    

    Zum einen fehlt die Lösung für den IEnumerator<T>, zum anderen die Lösung für das C#-yield.
    Kann jemand helfen?



  • yield gibt es soweit ich weiß nicht in C++/CLI (2008) mit 2010 bin ich mir nicht so sicher. Wenn du es aber nachmachen möchtest, schau dir doch deinen Code im Reflector an und wechsele die Sprache zu C++/CLI (als Add-In erhältlich).


Log in to reply