diff --git a/src/Generator/Generators/CSharp/CSharpSources.cs b/src/Generator/Generators/CSharp/CSharpSources.cs index 185b05e8..af438828 100644 --- a/src/Generator/Generators/CSharp/CSharpSources.cs +++ b/src/Generator/Generators/CSharp/CSharpSources.cs @@ -672,6 +672,18 @@ namespace CppSharp.Generators.CSharp return @class.IsValueType || !@class.HasBase || !@class.HasRefBase(); } + public virtual string GetBaseClassTypeName(BaseClassSpecifier @base) + { + this.DisableTypeMap(@base.Class); + + var typeName = @base.Type.Desugar().Visit(TypePrinter); + + foreach (var typeMap in Context.TypeMaps.TypeMaps.Values) + typeMap.IsEnabled = true; + + return typeName; + } + public override void GenerateClassSpecifier(Class @class) { // private classes must be visible to because the internal structs can be used in dependencies @@ -707,13 +719,8 @@ namespace CppSharp.Generators.CSharp foreach (var @base in @class.Bases.Where(b => b.IsGenerated && b.IsClass && b.Class.IsGenerated)) { - var typeMaps = new List(); - var keys = new List(); - this.DisableTypeMap(@base.Class); - var printedBase = @base.Type.Desugar().Visit(TypePrinter); - bases.Add(printedBase.Type); - foreach (var typeMap in Context.TypeMaps.TypeMaps.Values) - typeMap.IsEnabled = true; + var printedBase = GetBaseClassTypeName(@base); + bases.Add(printedBase); } }