Взгляните на приведенный ниже код.
void Foo1<T>() where T : struct, IBar1, IBar2, IBar3 {}
void Foo2<T>() where T : struct, IBar1, IBar2, IBar3 {}
void Foo3<T>() where T : struct, IBar1, IBar2, IBar3 {}
Как можно наложить псевдонимы ограничений в правой части каждого объявления, чтобы эти объявления могли стать короче и более читабельными?
Концептуально, то, что мне нужно, должно выглядеть примерно так (недействительный код C#):
MyConstraint<T> = T : struct, IBar1, IBar2, IBar3;
void Foo1<T>() where T : MyConstraint {}
void Foo2<T>() where T : MyConstraint {}
void Foo3<T>() where T : MyConstraint {}
То, что T : struct
является наиболее важной частью моего варианта использования.
Если в C# нет такой грамматики, какие альтернативы вы предлагаете уменьшить здесь?