Вы действительно хотите использовать это как ограничение (с ключевым словом 'where')? Вот несколько примеров прямой реализации:
interface ITwoTypes<T1, T2>
class TwoTypes<T1, T2> : ITwoTypes<T1, T2>
Или, если вы знаете тип (типы), который будет использовать ваш класс, вам не нужен параметр типа для класса:
class StringAndIntClass : ITwoTypes<int, string>
class StringAndSomething<T> : ITwoTypes<string, T>
Если вы используете интерфейс в качестве ограничения и не знаете, какие типы указывать явно, то да, вам нужно добавить параметры типа в объявление класса, как вы и предполагали.
class SomethingAndSomethingElse<T, TSomething, TSomethingElse> where T : ITwoTypes<TSomething, TSomethingElse>
class StringAndSomething<T, TSomething> where T : ITwoTypes<string, TSomething>