با استفاده از پیاده سازی ژنریک الگوی سینگلتون :

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