Per quello che vale, ecco un esempio di come l'ereditarietà da una classe generica viene utilizzata nel compilatore Roslyn di Microsoft e senza nemmeno cambiare il nome della classe. (Ero così confuso da questo che sono finito qui nella mia ricerca per vedere se questo era davvero possibile.)
Nel progetto CodeAnalysis puoi trovare questa definizione:
/// <summary>
/// Common base class for C# and VB PE module builder.
/// </summary>
internal abstract class PEModuleBuilder<TCompilation, TSourceModuleSymbol, TAssemblySymbol, TTypeSymbol, TNamedTypeSymbol, TMethodSymbol, TSyntaxNode, TEmbeddedTypesManager, TModuleCompilationState> : CommonPEModuleBuilder, ITokenDeferral
where TCompilation : Compilation
where TSourceModuleSymbol : class, IModuleSymbol
where TAssemblySymbol : class, IAssemblySymbol
where TTypeSymbol : class
where TNamedTypeSymbol : class, TTypeSymbol, Cci.INamespaceTypeDefinition
where TMethodSymbol : class, Cci.IMethodDefinition
where TSyntaxNode : SyntaxNode
where TEmbeddedTypesManager : CommonEmbeddedTypesManager
where TModuleCompilationState : ModuleCompilationState<TNamedTypeSymbol, TMethodSymbol>
{
...
}
Quindi nel progetto CSharpCodeanalysis c'è questa definizione:
internal abstract class PEModuleBuilder : PEModuleBuilder<CSharpCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState>
{
...
}
Questa classe PEModuleBuilder non generica è ampiamente utilizzata nel progetto CSharpCodeanalysis e diverse classi in quel progetto ereditano da esso, direttamente o indirettamente.
E poi nel progetto BasicCodeanalysis c'è questa definizione:
Partial Friend MustInherit Class PEModuleBuilder
Inherits PEModuleBuilder(Of VisualBasicCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState)
Dal momento che possiamo (si spera) presumere che Roslyn sia stato scritto da persone con una vasta conoscenza di C # e come dovrebbe essere usato, sto pensando che questa è una raccomandazione della tecnica.