Могу ли я сделать функцию COM Only? (Напротив <Runtime.InteropServices.ComVisible (False)>) - PullRequest
5 голосов
/ 28 июля 2011

У меня есть некоторые функции в моей VB.NET DLL, которые я могу «спрятать» от моего приложения VB6, используя следующее:

<Runtime.InteropServices.ComVisible(False)> _

Но есть ли способ сделать функцию видимой ТОЛЬКО для COMклиенты, а не сборки .NET?

Таким образом, я могу использовать общие методы для стороны .NET, избегая необходимости объявления экземпляра.

1 Ответ

3 голосов
/ 01 августа 2011

Вы можете достичь желаемого, используя Явная реализация интерфейса .Вы можете объявить интерфейс, который будет использоваться COM-клиентами, а другой - для клиентов .NET, оставив все методы закрытыми в вашем классе реализации.Код может выглядеть следующим образом:

Imports System.Runtime.InteropServices

    Public Interface ITestInterface

    <ComVisible(True)> _
        Sub MyTestMethod()    
    End Interface

    <ComVisible(True)> _
    Public Class TestClass
        Implements ITestInterface

        Private Sub MyTestMethod() Implements ITestInterface.MyTestMethod
        End Sub
    End Class


Я должен сказать, что не понимаю, что вы имеете в виду: «Таким образом, я могу использовать общие методы для стороны.необходимость объявления экземпляра. "

...