Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

COM interfaces should not redefine members from base interfaces #119

Closed
AArnott opened this issue Jan 14, 2021 · 5 comments
Closed

COM interfaces should not redefine members from base interfaces #119

AArnott opened this issue Jan 14, 2021 · 5 comments
Labels
blocking A projection cannot use the latest version

Comments

@AArnott
Copy link
Member

AArnott commented Jan 14, 2021

I believe we previously agreed that COM interfaces in the metadata should derive from interfaces and should not redefine members from those base interfaces, instead leaving that to the projection.

However several interfaces (e.g. IVssWriterComponentsExt) are redefining members from the base interfaces, which is causing problems with our C# projection.

@AArnott AArnott added the blocking A projection cannot use the latest version label Jan 14, 2021
@kennykerr
Copy link
Contributor

I think it's just this particular type because this is not a valid COM interface:

class IVssWriterComponentsExt :
    public IVssWriterComponents,
    public IUnknown
{
};

COM requires single inheritance and this is, well, something else.

@kennykerr
Copy link
Contributor

I would just skip over this type when parsing - Steve should probably just exclude it.

@AArnott
Copy link
Member Author

AArnott commented Jan 14, 2021

There are several such types. So lets fix or exclude all of them.

@sotteson1
Copy link
Contributor

It looks like all of these related "interfaces" are C++ classes and not interfaces. The docs call them that as well. I guess I will remove them unless anyone has a better idea.

@AArnott
Copy link
Member Author

AArnott commented Jan 16, 2021

Other problematic interfaces:

ID2D1BitmapRenderTarget.cs(153,33): error CS0111: Type 'ID2D1BitmapRenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1BitmapRenderTarget.cs(164,33): error CS0111: Type 'ID2D1BitmapRenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1BitmapRenderTarget.cs(170,23): error CS0111: Type 'ID2D1BitmapRenderTarget' already defines a member called 'AddRef' with the same parameter types

ID2D1BitmapRenderTarget.cs(176,23): error CS0111: Type 'ID2D1BitmapRenderTarget' already defines a member called 'Release' with the same parameter types

ID2D1BitmapRenderTarget.cs(183,30): error CS0111: Type 'ID2D1BitmapRenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1BitmapRenderTarget.cs(191,30): error CS0111: Type 'ID2D1BitmapRenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1HwndRenderTarget.cs(153,33): error CS0111: Type 'ID2D1HwndRenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1HwndRenderTarget.cs(164,33): error CS0111: Type 'ID2D1HwndRenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1HwndRenderTarget.cs(170,23): error CS0111: Type 'ID2D1HwndRenderTarget' already defines a member called 'AddRef' with the same parameter types

ID2D1HwndRenderTarget.cs(176,23): error CS0111: Type 'ID2D1HwndRenderTarget' already defines a member called 'Release' with the same parameter types

ID2D1HwndRenderTarget.cs(183,30): error CS0111: Type 'ID2D1HwndRenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1HwndRenderTarget.cs(191,30): error CS0111: Type 'ID2D1HwndRenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1RenderTarget.cs(153,33): error CS0111: Type 'ID2D1RenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1RenderTarget.cs(164,33): error CS0111: Type 'ID2D1RenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1RenderTarget.cs(170,23): error CS0111: Type 'ID2D1RenderTarget' already defines a member called 'AddRef' with the same parameter types

ID2D1RenderTarget.cs(176,23): error CS0111: Type 'ID2D1RenderTarget' already defines a member called 'Release' with the same parameter types

ID2D1RenderTarget.cs(183,30): error CS0111: Type 'ID2D1RenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1RenderTarget.cs(191,30): error CS0111: Type 'ID2D1RenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1Properties.cs(69,33): error CS0111: Type 'ID2D1Properties' already defines a member called 'QueryInterface' with the same parameter types

ID2D1Properties.cs(80,33): error CS0111: Type 'ID2D1Properties' already defines a member called 'QueryInterface' with the same parameter types

ID2D1Properties.cs(86,23): error CS0111: Type 'ID2D1Properties' already defines a member called 'AddRef' with the same parameter types

ID2D1Properties.cs(92,23): error CS0111: Type 'ID2D1Properties' already defines a member called 'Release' with the same parameter types

ID2D1GeometryGroup.cs(179,33): error CS0111: Type 'ID2D1GeometryGroup' already defines a member called 'QueryInterface' with the same parameter types

ID2D1GeometryGroup.cs(190,33): error CS0111: Type 'ID2D1GeometryGroup' already defines a member called 'QueryInterface' with the same parameter types

ID2D1GeometryGroup.cs(196,23): error CS0111: Type 'ID2D1GeometryGroup' already defines a member called 'AddRef' with the same parameter types

ID2D1GeometryGroup.cs(202,23): error CS0111: Type 'ID2D1GeometryGroup' already defines a member called 'Release' with the same parameter types

ID2D1GeometryGroup.cs(209,30): error CS0111: Type 'ID2D1GeometryGroup' already defines a member called 'GetFactory' with the same parameter types

ID2D1GeometryGroup.cs(217,30): error CS0111: Type 'ID2D1GeometryGroup' already defines a member called 'GetFactory' with the same parameter types

ID2D1Factory.cs(53,23): error CS0111: Type 'ID2D1Factory' already defines a member called 'Release' with the same parameter types

ID2D1Geometry.cs(179,33): error CS0111: Type 'ID2D1Geometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1Geometry.cs(190,33): error CS0111: Type 'ID2D1Geometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1Geometry.cs(196,23): error CS0111: Type 'ID2D1Geometry' already defines a member called 'AddRef' with the same parameter types

ID2D1Geometry.cs(202,23): error CS0111: Type 'ID2D1Geometry' already defines a member called 'Release' with the same parameter types

ID2D1Geometry.cs(209,30): error CS0111: Type 'ID2D1Geometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1Geometry.cs(217,30): error CS0111: Type 'ID2D1Geometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1Effect.cs(69,33): error CS0111: Type 'ID2D1Effect' already defines a member called 'QueryInterface' with the same parameter types

ID2D1Effect.cs(80,33): error CS0111: Type 'ID2D1Effect' already defines a member called 'QueryInterface' with the same parameter types

ID2D1Effect.cs(86,23): error CS0111: Type 'ID2D1Effect' already defines a member called 'AddRef' with the same parameter types

ID2D1Effect.cs(92,23): error CS0111: Type 'ID2D1Effect' already defines a member called 'Release' with the same parameter types

ID2D1Effect.cs(158,33): error CS0111: Type 'ID2D1Effect' already defines a member called 'GetSubProperties' with the same parameter types

ID2D1TransformedGeometry.cs(179,33): error CS0111: Type 'ID2D1TransformedGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1TransformedGeometry.cs(190,33): error CS0111: Type 'ID2D1TransformedGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1TransformedGeometry.cs(196,23): error CS0111: Type 'ID2D1TransformedGeometry' already defines a member called 'AddRef' with the same parameter types

ID2D1TransformedGeometry.cs(202,23): error CS0111: Type 'ID2D1TransformedGeometry' already defines a member called 'Release' with the same parameter types

ID2D1TransformedGeometry.cs(209,30): error CS0111: Type 'ID2D1TransformedGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1TransformedGeometry.cs(217,30): error CS0111: Type 'ID2D1TransformedGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1RectangleGeometry.cs(179,33): error CS0111: Type 'ID2D1RectangleGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1RectangleGeometry.cs(190,33): error CS0111: Type 'ID2D1RectangleGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1RectangleGeometry.cs(196,23): error CS0111: Type 'ID2D1RectangleGeometry' already defines a member called 'AddRef' with the same parameter types

ID2D1RectangleGeometry.cs(202,23): error CS0111: Type 'ID2D1RectangleGeometry' already defines a member called 'Release' with the same parameter types

ID2D1RectangleGeometry.cs(209,30): error CS0111: Type 'ID2D1RectangleGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1RectangleGeometry.cs(217,30): error CS0111: Type 'ID2D1RectangleGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1DeviceContext.cs(163,33): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'QueryInterface' with the same parameter types

ID2D1DeviceContext.cs(174,33): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'QueryInterface' with the same parameter types

ID2D1DeviceContext.cs(180,23): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'AddRef' with the same parameter types

ID2D1DeviceContext.cs(186,23): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'Release' with the same parameter types

ID2D1DeviceContext.cs(193,30): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'GetFactory' with the same parameter types

ID2D1DeviceContext.cs(201,30): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'GetFactory' with the same parameter types

ID2D1DeviceContext.cs(673,29): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'GetPixelSize' with the same parameter types

ID2D1DeviceContext.cs(679,23): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'GetMaximumBitmapSize' with the same parameter types

ID2D1DeviceContext.cs(686,30): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'IsSupported' with the same parameter types

ID2D1DeviceContext.cs(694,30): error CS0111: Type 'ID2D1DeviceContext' already defines a member called 'IsSupported' with the same parameter types

ID2D1EllipseGeometry.cs(179,33): error CS0111: Type 'ID2D1EllipseGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1EllipseGeometry.cs(190,33): error CS0111: Type 'ID2D1EllipseGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1EllipseGeometry.cs(196,23): error CS0111: Type 'ID2D1EllipseGeometry' already defines a member called 'AddRef' with the same parameter types

ID2D1EllipseGeometry.cs(202,23): error CS0111: Type 'ID2D1EllipseGeometry' already defines a member called 'Release' with the same parameter types

ID2D1EllipseGeometry.cs(209,30): error CS0111: Type 'ID2D1EllipseGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1EllipseGeometry.cs(217,30): error CS0111: Type 'ID2D1EllipseGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1RoundedRectangleGeometry.cs(179,33): error CS0111: Type 'ID2D1RoundedRectangleGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1RoundedRectangleGeometry.cs(190,33): error CS0111: Type 'ID2D1RoundedRectangleGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1RoundedRectangleGeometry.cs(196,23): error CS0111: Type 'ID2D1RoundedRectangleGeometry' already defines a member called 'AddRef' with the same parameter types

ID2D1RoundedRectangleGeometry.cs(202,23): error CS0111: Type 'ID2D1RoundedRectangleGeometry' already defines a member called 'Release' with the same parameter types

ID2D1RoundedRectangleGeometry.cs(209,30): error CS0111: Type 'ID2D1RoundedRectangleGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1RoundedRectangleGeometry.cs(217,30): error CS0111: Type 'ID2D1RoundedRectangleGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1DCRenderTarget.cs(153,33): error CS0111: Type 'ID2D1DCRenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1DCRenderTarget.cs(164,33): error CS0111: Type 'ID2D1DCRenderTarget' already defines a member called 'QueryInterface' with the same parameter types

ID2D1DCRenderTarget.cs(170,23): error CS0111: Type 'ID2D1DCRenderTarget' already defines a member called 'AddRef' with the same parameter types

ID2D1DCRenderTarget.cs(176,23): error CS0111: Type 'ID2D1DCRenderTarget' already defines a member called 'Release' with the same parameter types

ID2D1DCRenderTarget.cs(183,30): error CS0111: Type 'ID2D1DCRenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1DCRenderTarget.cs(191,30): error CS0111: Type 'ID2D1DCRenderTarget' already defines a member called 'GetFactory' with the same parameter types

ID2D1PathGeometry.cs(179,33): error CS0111: Type 'ID2D1PathGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1PathGeometry.cs(190,33): error CS0111: Type 'ID2D1PathGeometry' already defines a member called 'QueryInterface' with the same parameter types

ID2D1PathGeometry.cs(196,23): error CS0111: Type 'ID2D1PathGeometry' already defines a member called 'AddRef' with the same parameter types

ID2D1PathGeometry.cs(202,23): error CS0111: Type 'ID2D1PathGeometry' already defines a member called 'Release' with the same parameter types

ID2D1PathGeometry.cs(209,30): error CS0111: Type 'ID2D1PathGeometry' already defines a member called 'GetFactory' with the same parameter types

ID2D1PathGeometry.cs(217,30): error CS0111: Type 'ID2D1PathGeometry' already defines a member called 'GetFactory' with the same parameter types

@AArnott AArnott closed this as completed Jan 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocking A projection cannot use the latest version
Projects
None yet
Development

No branches or pull requests

3 participants