Ogólne dziedziczone ograniczenie typu w C #

Mam nieeleganckie rozwiązanie tego, czego potrzebuję, ale szukam eleganckiego rozwiązania, aby je zastąpić.

Poniższy kod nie kompiluje się, ale reprezentuje to, co chciałbym zrobić:

<code>interface IWebService
{
}

abstract class BaseClient<T>
{
}

class SpecializedClient : BaseClient<IWebService>
{
}

class ClientHelper<T> where T : BaseClient<*>
{
}
</code>

GdzieT wClientHelper<T> to każda klasa, która się rozszerzaBaseClient niezależnie od przekazanego typu szablonu.

Nieeleganckie rozwiązanie, które znalazłem to:

<code>class ClientHelper<T, U> where T : BaseClient<U> {}
</code>

Powodem, dla którego staje się nieelegancki, jest to, że mój projekt kończy się klasą podobną do:

<code>class MyClass<A, B, C, D, E, F, G> where A  : MyBaseClass<B, C, D, E, F, G>
</code>

Aż do klasy bazowej, która ma pojedynczy typ. Czy jest to po prostu koszt posiadania złożonego drzewa dziedziczenia klas ogólnych, czy też jest to prostszy sposób, zachowując ograniczenia typów dla typów szablonów?

questionAnswers(2)

yourAnswerToTheQuestion