//****************************** // Written by Peter Golde // Copyright (c) 2004-2007, Wintellect // // Use and restribution of this code is subject to the license agreement // contained in the file "License.txt" accompanying this file. //****************************** using System; using System.Collections; using System.Collections.Generic; namespace Wintellect.PowerCollections { /// <summary> /// A holder class for various internal utility functions that need to be shared. /// </summary> internal static class Util { /// <summary> /// Determine if a type is cloneable: either a value type or implementing /// ICloneable. /// </summary> /// <param name="type">Type to check.</param> /// <param name="isValue">Returns if the type is a value type, and does not implement ICloneable.</param> /// <returns>True if the type is cloneable.</returns> public static bool IsCloneableType(Type type, out bool isValue) { isValue = false; if (typeof(ICloneable).IsAssignableFrom(type)) { return true; } else if (type.IsValueType) { isValue = true; return true; } else return false; } } }