Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Adds all of the elements of the c collection to the target collection

#region License and Copyright /*  * Dotnet Commons Collections   *   *  * This library is free software; you can redistribute it and/or modify it   * under the terms of the GNU Lesser General Public License as published by   * the Free Software Foundation; either version 2.1 of the License, or   * (at your option) any later version.  *  * This library is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License   * for more details.   *  * You should have received a copy of the GNU Lesser General Public License   * along with this library; if not, write to the   * Free Software Foundation, Inc.,   * 59 Temple Place,   * Suite 330,   * Boston,   * MA 02111-1307   * USA   *   */ #endregion using System; using System.Collections; namespace Dotnet.Commons.Lang {     class MainClass{         /// <summary>         /// Adds all of the elements of the "c" collection to the "target" collection.         /// </summary>         /// <param name="target">Collection where the new elements will be added.</param>         /// <param name="c">Collection whose elements will be added.</param>         /// <returns>Returns true if at least one element was added, false otherwise.</returns>         public static bool AddAll(System.Collections.ICollection target, System.Collections.ICollection c)         {             System.Collections.IEnumerator e = new System.Collections.ArrayList(c).GetEnumerator();             bool added = false;             //Reflection. Invoke "addAll" method for proprietary classes             System.Reflection.MethodInfo method;             try             {                 method = target.GetType().GetMethod("addAll");                 if (method != null)                     added = (bool)method.Invoke(target, new System.Object[] { c });                 else                 {                     method = target.GetType().GetMethod("Add");                     while (e.MoveNext() == true)                     {                         bool tempBAdded = (int)method.Invoke(target, new System.Object[] { e.Current }) >= 0;                         added = added ? added : tempBAdded;                     }                 }             }             catch (System.Exception ex)             {                 throw ex;             }             return added;         }    } }