从C#订阅托管COM程序集中的COM事件

时间:2012-06-14 08:38:27

标签: c# events com regfreecom

我有一个.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 个答案:

没有答案