Custom enumerator class in C#


Below class is an example of a custom enumerator class. It is a generic class used to contain details on of the related object. So one can use this class in for each loop and for loop to retrieve data. It can be used in the place of data set .Because in this class you can store objects of a utility class. So each object can contain different value.

Gettrxcardenumarator.cs 

namespace  cardenumarator
{
    #region[Directive]
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    #endregion[Directive]
    /// <summary>
    /// This class used get enumerated data for gettrxcard
    /// </summary>
    /// <typeparam name="T">Generic type</typeparam>
    public class Gettrxcardenumarator<T> : IEnumerable, IEnumerator
    {
        #region[privateData]
        private List<T> gettrxcard = new List<T>();
        private int inex = -1;
        #endregion[privateData]
        #region[Property]
        /// <summary>
        /// Gets Length
        /// </summary>
        public int Length
        {
            get { return gettrxcard.Count; }
        }
        /// <summary>
        /// Gets  gettrxcard
        /// </summary>
        object IEnumerator.Current
        {
            get
            {
                if (inex != -1)
                {
                    return gettrxcard[inex];
                }
                else
                {
                    return null;
                }
            }
        }
        /// <summary>
        /// This is the class indexing concept
        /// </summary>
        /// <param name="index">Int data type</param>
        /// <returns>Generic type</returns>
        public T this[int index]
        {
            set
            {
                gettrxcard.Add(value);
            }
            get
            {
                return gettrxcard[index];
            }
        }
        #endregion[Property]
        #region[PublicMethod]
        /// <summary>
        /// GetEnumerator function is used to iterate in foreach loop
        /// </summary>
        /// <returns>IEnumerator data type</returns>
        public IEnumerator GetEnumerator()
        {
            return this;
        }
        /// <summary>
        /// It i used to get the next record
        /// </summary>
        /// <returns>A<see cref="System.Boolean"/> value returing true or false </returns>
        public bool MoveNext()
        {
            if (inex == gettrxcard.Count - 1)
            {
                Reset();
                return false;
            }
            inex++;
            return true;
        }
        /// <summary>
        /// Used to reset the value
        /// </summary>
        public void Reset()
        {
            this.inex = -1;
        }
        #endregion[PublicMethod]
    }
}

Below code is use to define how to use this enumerator class 

UseEnumurator.cs

namespace
  cardenumarator
{
     Public Class  StudentDetail
     {
         #region[PrivateField]
          Private string  name;
          Private  string age;
          Private  string  sex;
         #endregion[PrivateField]
         #region[Poperty]
         /// <summary>
         /// Gets  or sets Name
         /// </summary>
         Public string Name
         {
              get{return name;}
              set{name=value;}
         }
          /// <summary>
         /// Gets  or sets  Age
         /// </summary>
          Public string Age
         {
              get{return age;}
              set{age=value;}
         }
         /// <summary>
         /// Gets  or sets  Sex
         /// </summary>
         Public string Sex
         {
              get{return sex;}
              set{sex=value;}
         }
        #endregion{Poperty]
      } 
      Public Class UseEnumurator
     {
          /// <summary>
        /// create the  instance of the TransactionRetrieveDAL class from being created.
        /// </summary>
            public  UseEnumurator()
            {
            } 
           public   Gettrxcardenumarator<StudentDetail> GetUsersDetail()
           {
               StudentDetail  student1 = new  StudentDetail();
               student1.Name="Rahul";
               student1.Age="12";
               student1. sex="M";
               StudentDetail  student2 = new  StudentDetail();
               student2.Name="Rahul";
               student2.Age="12";
               student2. sex="M";
               Gettrxcardenumarator<StudentDetail> StudentDetail = new Gettrxcardenumarator<StudentDetail>();
               StudentDetail[0]= student1;
               StudentDetail[0]= student2;
             }
             void Main()
             {
                    Gettrxcardenumarator<StudentDetail> StudentDetail=GetUsersDetail();
                    foreach( StudentDetail student  in    StudentDetail.)
                    {
                         console.writeLine(student.Name);
                         console.writeLine(student.Age);
                         console.writeLine(student.Sex);
                         console.readLine();
                     }
            }
     }