[Mono-bugs] [Bug 499566] New: a QueryInterface in C++ on C# COM object only works for directly implemented interfaces not interfaces implemented by base classes. .NET Difference

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Apr 29 19:00:19 EDT 2009


http://bugzilla.novell.com/show_bug.cgi?id=499566


           Summary: a QueryInterface in C++ on C# COM object only works
                    for directly implemented interfaces not interfaces
                    implemented by base classes. .NET Difference
    Classification: Mono
           Product: Mono: Runtime
           Version: SVN
          Platform: i686
        OS/Version: Linux
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: interop
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: tom_hindle at sil.org
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


Created an attachment (id=289056)
 --> (http://bugzilla.novell.com/attachment.cgi?id=289056)
Allows cominterop_ccw_queryinterface to find interfaces implemented by base
classes.

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8)
Gecko/2009032711 Ubuntu/8.04 (hardy) Firefox/3.0.8

a QueryInterface in C++ on C# COM object only works for directly implemented
interfaces not interfaces implemented by base classes. 

For example: class' defined in C#

class A : IX, IY
{

}

class B : A, IZ
{

}

in C++
// Assuming b is an instance of B
b->QueryInterface(IZ) // works
b->QueryInterface(IX) // doesn't work but should
b->QueryInterface(IY) // doesn't work but should

// Assuming a is an instance of A
b->QueryInterface(IX> // works
b->QueryInterface(IY> // works

Attached patch to fix this issue.

Reproducible: Always

Steps to Reproduce:
1.
2.
3.

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list