/// <summary>
 /// This constructor can be used for objects that implement IDisposable.
 /// </summary>
 /// <param name="createCallback">The wrapper to call to create the object.</param>
 public WrapperCollection(CreateWrapper createCallback)
 {
     if (typeof(T).GetInterface(DISPOSABLE_INTERFACE_NAME) != null)
     {
         this.createCallback  = createCallback;
         this.destroyCallback = disposableDelete;
     }
     else
     {
         throw new Exception("Tried to create a WrapperCollection for type {0} that is not IDisposable. Please explicitly defind a destroyCallback and use the other constructor for this type.");
     }
 }
 /// <summary>
 /// This constructor can be used for objects that need a custom destroy method.
 /// </summary>
 /// <param name="createCallback">The function to call to create the object.</param>
 /// <param name="destroyCallback">The function to call to destroy the object.</param>
 public WrapperCollection(CreateWrapper createCallback, DestroyWrapper destroyCallback)
 {
     this.createCallback  = createCallback;
     this.destroyCallback = destroyCallback;
 }