using System;
using System.Collections.Generic;
using System.Text;

namespace Substrate.Core
{
    /// <summary>
    /// Provides a virtual deep copy capability to implementors.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface ICopyable <T>
    {
        /// <summary>
        /// Performs a virtual deep copy of the object instance.
        /// </summary>
        /// <returns>An independent copy of the object instance.</returns>
        T Copy ();
    }
}