Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/08/10 03:43:36 (14 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • worked on parameters and operators
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core/3.3/ExecutionContextCollection.cs

    r2664 r2757  
    2222using System;
    2323using System.Collections.Generic;
     24using System.Linq;
    2425using System.Text;
    2526using System.Xml;
     
    2728
    2829namespace HeuristicLab.Core {
    29   public class ExecutionContextCollection : DeepCloneable, IList<ExecutionContext> {
     30  public class ExecutionContextCollection : DeepCloneable, IList<IExecutionContext>, IExecutionContext {
    3031    [Storable]
    31     private IList<ExecutionContext> contexts;
     32    private IList<IExecutionContext> contexts;
    3233
    3334    [Storable]
     
    3940
    4041    public ExecutionContextCollection() {
    41       contexts = new List<ExecutionContext>();
     42      contexts = new List<IExecutionContext>();
    4243      parallel = false;
    4344    }
    44     public ExecutionContextCollection(IEnumerable<ExecutionContext> collection) {
    45       contexts = new List<ExecutionContext>(collection);
     45    public ExecutionContextCollection(IEnumerable<IExecutionContext> collection) {
     46      contexts = new List<IExecutionContext>(collection.Where(e => e != null));
    4647      parallel = false;
    4748    }
    48     public ExecutionContextCollection(params ExecutionContext[] list) {
    49       contexts = new List<ExecutionContext>(list);
     49    public ExecutionContextCollection(params IExecutionContext[] list) {
     50      contexts = new List<IExecutionContext>(list.Where(e => e != null));
    5051      parallel = false;
    5152    }
     
    5657      clone.parallel = parallel;
    5758      for (int i = 0; i < contexts.Count; i++)
    58         clone.contexts.Add((ExecutionContext)cloner.Clone(contexts[i]));
     59        clone.contexts.Add((IExecutionContext)cloner.Clone(contexts[i]));
    5960      return clone;
    6061    }
    6162
    62     #region IList<ExecutionContext> Members
    63     public int IndexOf(ExecutionContext item) {
     63    #region IList<IExecutionContext> Members
     64    public int IndexOf(IExecutionContext item) {
    6465      return contexts.IndexOf(item);
    6566    }
    66     public void Insert(int index, ExecutionContext item) {
    67       contexts.Insert(index, item);
     67    public void Insert(int index, IExecutionContext item) {
     68      if (item != null) contexts.Insert(index, item);
    6869    }
    6970    public void RemoveAt(int index) {
    7071      contexts.RemoveAt(index);
    7172    }
    72     public ExecutionContext this[int index] {
     73    public IExecutionContext this[int index] {
    7374      get { return contexts[index]; }
    74       set { contexts[index] = value; }
     75      set { if (value != null) contexts[index] = value; }
    7576    }
    7677    #endregion
    7778
    78     #region ICollection<ExecutionContext> Members
    79     public void Add(ExecutionContext item) {
    80       contexts.Add(item);
     79    #region ICollection<IExecutionContext> Members
     80    public void Add(IExecutionContext item) {
     81      if (item != null) contexts.Add(item);
    8182    }
    8283    public void Clear() {
    8384      contexts.Clear();
    8485    }
    85     public bool Contains(ExecutionContext item) {
     86    public bool Contains(IExecutionContext item) {
    8687      return contexts.Contains(item);
    8788    }
    88     public void CopyTo(ExecutionContext[] array, int arrayIndex) {
     89    public void CopyTo(IExecutionContext[] array, int arrayIndex) {
    8990      contexts.CopyTo(array, arrayIndex);
    9091    }
     
    9596      get { return contexts.IsReadOnly; }
    9697    }
    97     public bool Remove(ExecutionContext item) {
     98    public bool Remove(IExecutionContext item) {
    9899      return contexts.Remove(item);
    99100    }
    100101    #endregion
    101102
    102     #region IEnumerable<ExecutionContext> Members
    103     public IEnumerator<ExecutionContext> GetEnumerator() {
     103    #region IEnumerable<IExecutionContext> Members
     104    public IEnumerator<IExecutionContext> GetEnumerator() {
    104105      return contexts.GetEnumerator();
    105106    }
Note: See TracChangeset for help on using the changeset viewer.