namespace UdtSharp { public abstract class CCVirtualFactory { public abstract CC create(); public abstract CCVirtualFactory clone(); } public class CCFactory : CCVirtualFactory where T : new() { public override CC create() { return new T() as CC; } public override CCVirtualFactory clone() { return new CCFactory(); } } }