Browse Source

Worked around a bug in the Mono C# compiler when casting generics.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1014/head
Dimitar Dobrev 8 years ago
parent
commit
3c55f7fb9e
  1. 9
      src/Generator/Generators/CSharp/CSharpMarshal.cs

9
src/Generator/Generators/CSharp/CSharpMarshal.cs

@ -304,15 +304,16 @@ namespace CppSharp.Generators.CSharp @@ -304,15 +304,16 @@ namespace CppSharp.Generators.CSharp
// if the class is an abstract impl, use the original for the object map
var qualifiedClass = originalClass.Visit(typePrinter);
var finalType = (returnType.GetFinalPointee() ?? returnType).Desugar();
Class returnedClass;
if (finalType.TryGetClass(out returnedClass) && returnedClass.IsDependent)
Context.Return.Write($"({returnType.Visit(typePrinter)}) (object) ");
if (returnType.IsAddress())
Context.Return.Write(HandleReturnedPointer(@class, qualifiedClass.Type));
else
Context.Return.Write($"{qualifiedClass}.{Helpers.CreateInstanceIdentifier}({Context.ReturnVarName})");
var finalType = (returnType.GetFinalPointee() ?? returnType).Desugar();
Class returnedClass;
if (finalType.TryGetClass(out returnedClass) && returnedClass.IsDependent)
Context.Return.Write($" as {returnType.Visit(typePrinter)}");
return true;
}

Loading…
Cancel
Save