यह क्या है इसके लिए, यहाँ एक उदाहरण दिया गया है कि कैसे जेनेरिक क्लास से विरासत में माइक्रोसॉफ्ट के रोसलिन कंपाइलर का उपयोग किया जाता है, और क्लास का नाम बदले बिना भी। (मैं इससे इतना भड़क गया था कि मैं अपनी खोज में यहाँ समाप्त हो गया, यह देखने के लिए कि क्या यह वास्तव में संभव था।)
प्रोजेक्ट कोडएनालिसिस में आप यह परिभाषा पा सकते हैं:
/// <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>
{
...
}
फिर प्रोजेक्ट CSharpCodeanalysis में यह परिभाषा है:
internal abstract class PEModuleBuilder : PEModuleBuilder<CSharpCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState>
{
...
}
यह गैर-जेनेरिक PEModuleBuilder वर्ग CSharpCodeanalysis परियोजना में बड़े पैमाने पर उपयोग किया जाता है, और उस परियोजना के कई वर्ग इसे प्रत्यक्ष या अप्रत्यक्ष रूप से प्राप्त करते हैं।
और फिर परियोजना में BasicCodeanalysis वहाँ इस परिभाषा है:
Partial Friend MustInherit Class PEModuleBuilder
Inherits PEModuleBuilder(Of VisualBasicCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState)
चूँकि हम (उम्मीद) यह मान सकते हैं कि रोज़लिन को C # के व्यापक ज्ञान वाले लोगों द्वारा लिखा गया था और इसका उपयोग कैसे किया जाना चाहिए, मैं सोच रहा हूँ कि यह तकनीक की सिफारिश है।