diff --git a/src/generator.cs b/src/generator.cs index 695cd38c2d..2485ad1dd3 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1077,8 +1077,13 @@ public partial class Generator : IMemberGatherer { if (type.IsSubclassOf (TypeManager.NSObject)) return true; - if (BindThirdPartyLibrary) + if (BindThirdPartyLibrary) { + var bta = ReflectionExtensions.GetBaseTypeAttribute (type, this); + if (bta?.BaseType != null) + return IsNSObject (bta.BaseType); + return false; + } return type.IsInterface; } diff --git a/tests/generator/BGenTests.cs b/tests/generator/BGenTests.cs index 13dfdf17ec..7845d33ab6 100644 --- a/tests/generator/BGenTests.cs +++ b/tests/generator/BGenTests.cs @@ -603,6 +603,12 @@ namespace GeneratorTests [Test] public void GHIssue6626 () => BuildFile (Profile.iOS, "ghissue6626.cs"); + [Test] + public void VSTS970507 () + { + BuildFile (Profile.iOS, "tests/vsts-970507.cs"); + } + BGenTool BuildFile (Profile profile, params string [] filenames) { return BuildFile (profile, true, false, filenames); diff --git a/tests/generator/generator-tests.csproj b/tests/generator/generator-tests.csproj index 201c3e40a2..8ff536787c 100644 --- a/tests/generator/generator-tests.csproj +++ b/tests/generator/generator-tests.csproj @@ -71,6 +71,7 @@ + diff --git a/tests/generator/tests/vsts-970507.cs b/tests/generator/tests/vsts-970507.cs new file mode 100644 index 0000000000..af7fb02147 --- /dev/null +++ b/tests/generator/tests/vsts-970507.cs @@ -0,0 +1,18 @@ +using System; +using Foundation; + +namespace NS +{ + [BaseType (typeof (NSObject))] + interface OutNSObject + { + [Export ("func:")] + void Func (out ErrorObject error); + } + + [BaseType (typeof (NSObject))] + interface ErrorObject + { + + } +}