Подписка на события COM в управляемой сборке COM из C#

У меня есть приложение.NET 3.5, и мне нужно использовать.NET 4 для определенной его части. Таким образом, я представил часть.NET 4 как свободную от регистрации сборку COM.

В сборке.NET 3.5 у меня есть следующий код, который отлично работает:

Type comClassType = Type.GetTypeFromProgID("A.ProgID");
object comObject = Activator.CreateInstance(comClassType);
var managedObj = (IManagedInterface)comObject;
managedObj.MyMethod(); // call .NET 4 method from .NET 3.5

Объявление IManagedInterface выглядит следующим образом:

[Guid("ED915810-1B19-4357-9FD4-564CFC0AFAFF")]
[ComVisible(true)]
public interface IManagedInterface
{
    void MyMethod();
    ...
}

У меня также есть интерфейс событий, объявленный так:

[Guid("D3633346-EB8B-4F62-A806-3C393D40F694")]
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyComEvents
{
    void MyEvent()
}

Это, насколько я могу судить, согласно этой статье: http://msdn.microsoft.com/en-us/library/dd8bf0x3.aspx

Мой класс.NET 4 COM выглядит следующим образом:

[Guid("7BA49B2D-A359-4B70-BEB1-2A61EA63EFA4")]
[ComVisible(true)]
[ComSourceInterfaces(typeof(IMyComEvents))]
public class ManagedComWrapper : IManagedInterface
{
    ...
}

Тогда возникает вопрос: как я могу в клиенте.NET 3.5, показанном вверху, подписаться на события IMyComEvents или обработать их?

0 ответов

Другие вопросы по тегам