با استفاده از پیاده سازی ژنریک الگوی سینگلتون :
public class SingletonProvider<T> where T : new()
{
    SingletonProvider() { }
    public static T Instance
    {
        get 
        { 
            return SingletonCreator.Instance; 
        }
    }
    class SingletonCreator
    {
        static SingletonCreator(){}
        private static T instance;
        public static T Instance
        {
            get
            {
                System.Windows.Forms.Form frm = instance as System.Windows.Forms.Form;
                if (instance == null || frm.IsDisposed==true)
                    instance = new T();
                return instance;
            }
        }
    }
}
و برای استفاده : BoatForm boat = SingletonProvider<BoatForm>.Instance;
آموزش کامل این روش : https://barnamenevis.org/showthread.php?t=90581