.NET 3.5アプリケーションがあり、その特定の部分に.NET4を使用する必要があります。したがって、.NET4パーツを登録不要の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
私の.NET4COMクラスは次のとおりです。
[Guid("7BA49B2D-A359-4B70-BEB1-2A61EA63EFA4")]
[ComVisible(true)]
[ComSourceInterfaces(typeof(IMyComEvents))]
public class ManagedComWrapper : IManagedInterface
{
...
}
問題は、上部に表示されている.NET 3.5クライアントで、IMyComEventsからのイベントをサブスクライブ/処理するにはどうすればよいですか?