we implement ICloneable interface to implement prototype pattern in a .Net optimized way.
Implementing the ICloneable into the base class to create the clone type of the classes.
Implementing the ICloneable into the base class to create the clone type of the classes.
namespace apptest
{
class Program
{
static void Main(string[] args)
{
BasePage<Employee> objcol = new BasePage<Employee>();
objcol.Add(new Employee { Name = "John", Designation = "manager" });
objcol.Add(new Employee { Name = "BOb", Designation = "Worker" });
objcol.Add(new Employee { Name = "Eric", Designation = "Worker" });
BasePage<Employee> objcol2 = new BasePage<Employee>();
objcol2 = (BasePage<Employee>)objcol.Clone();
}
}
public class Employee : BasePage<Employee>
{
public string Name { get; set; }
public string Designation { get; set; }
}
public class BasePage : IEnumerable, ICloneable
{
List _arraList;
static int _currPos = 0;
public BasePage()
{
_arraList = new List();
_currPos = 0;
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
foreach (T item in _arraList)
{
yield return item;
}
}
//public IEnumerator GetEnumerator()
//{
// for (int i = 0; i <= _currPos; i++)
// yield return _arraList[i];
//}
#endregion IEnumerable Members
#region IEnumerable Members
IEnumerator IEnumerable.GetEnumerator()
{
return _arraList.GetEnumerator();
}
#endregion IEnumerable Members
#region IEnumerable Members
//IEnumerator IEnumerable.GetEnumerator()
//{
// for (int i = 0; i <= _currPos; i++)
// yield return _arraList[i];
//}
IEnumerator IEnumerable.GetEnumerator()
{
yield return this;
}
#endregion IEnumerable Members
internal void Add(T Item)
{
_arraList.Add(Item);
}
public object Clone()
{
return this.MemberwiseClone();
}
}
}
No comments:
Post a Comment