How can we expose a .NET public const to COM interop

Posted by JulienC on Stack Overflow See other posts from Stack Overflow or by JulienC
Published on 2010-05-18T09:17:01Z Indexed on 2010/05/18 9:21 UTC
Read the original article Hit count: 392

Filed under:
|
|
|

For historical reasons, we need to expose string constants in .NET through COM interface.

We managed to expose ENUM but we can't find a way to expose string const.

We try the following code :

<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1

#Region "COM GUIDs"
    ' These  GUIDs provide the COM identity for this class 
    ' and its COM interfaces. If you change them, existing 
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "608c6545-977e-4260-a3cf-11545c82906a"
    Public Const InterfaceId As String = "12b8a6c7-e7f6-4022-becd-2efd8b3a756e"
    Public Const EventsId As String = "05a2856f-d877-4673-8ea8-20f5a9f268d5"
#End Region

    ' A creatable COM class must have a Public Sub New() 
    ' with no parameters, otherwise, the class will not be 
    ' registered in the COM registry and cannot be created 
    ' via CreateObject.
    Public Sub New()
        MyBase.New()
    End Sub

    Public Const chaine As String = "TEST"

    Public Sub Method()

    End Sub

End Class

But when we look on the OLE object viewer, we only see the method. See ScreenShot: screenshot of OLE viewer

Anyone have an idea ?

Thanks,

© Stack Overflow or respective owner

Related posts about .NET

Related posts about vb.net