diff --git a/src/AST/Class.cs b/src/AST/Class.cs index 14de8630..18063e1d 100644 --- a/src/AST/Class.cs +++ b/src/AST/Class.cs @@ -178,6 +178,11 @@ namespace CppSharp.AST get { return Type == ClassType.Interface; } } + public bool IsAbstractImpl + { + get { return Methods.Any(m => m.SynthKind == FunctionSynthKind.AbstractImplCall); } + } + public IEnumerable Constructors { get diff --git a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs index 53b62365..89245cb9 100644 --- a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs +++ b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs @@ -333,7 +333,8 @@ namespace CppSharp.Generators.CSharp if (!@class.IsOpaque) { - GenerateClassInternals(@class); + if (!@class.IsAbstractImpl) + GenerateClassInternals(@class); GenerateDeclContext(@class); if (@class.IsDependent || !@class.IsGenerated) @@ -1893,8 +1894,7 @@ namespace CppSharp.Generators.CSharp string className = @class.Name; string safeIdentifier = className; - bool isAbstractImpl = @class.Methods.Any(m => m.SynthKind == FunctionSynthKind.AbstractImplCall); - if (isAbstractImpl) + if (@class.IsAbstractImpl) { className = className.Substring(0, safeIdentifier.LastIndexOf("Internal", StringComparison.Ordinal)); @@ -1920,7 +1920,7 @@ namespace CppSharp.Generators.CSharp var hasBaseClass = @class.HasBaseClass && @class.BaseClass.IsRefType; if (hasBaseClass) WriteLineIndent(": base(({0}.Internal*) native{1})", - @class.BaseClass.Name, isAbstractImpl ? ", true" : string.Empty); + @class.BaseClass.Name, @class.IsAbstractImpl ? ", true" : string.Empty); WriteStartBraceIndent();