We’re doing the same thing and we work around by specializing a class first and derive from the specialized class.
Using the code from your example this means something like:
public partial class UserControl : UserControlDesignable
{
...
}
public class UserControlDesignable : BaseUserControl<Someclass> { }
The designer is still acting flaky sometimes – but most of the time it works.