Думаю, у вас нет другого выбора, кроме как передать тип как другой тип c. Посмотрите пример, как это делается с точки зрения беглых строителей, поскольку я думаю, что это очень близко к тому, что вы хотите иметь: Ссылка .
Как:
FePatricle<T, U> where T: Particle, U: FeParticle<T, U>
Выглядит сумасшедшим, но это должно сработать в конструкторе:
public FeParticle(ParticleHub<U>...
РЕДАКТИРОВАТЬ:
Или, насколько я понимаю, более вероятно:
FePatricle<T>: Particle where T: FeParticle<T>
Итак FePartivle
расширяет Particle
и несет с собой свой собственный тип T
?