0

C#で作ったdllをCOMに登録しました。(私は regasm.exe と厳密な名前 +gacutil.exe を使用しました)

これは、COM に登録したコードです。

[ComVisible(true)]
[Guid("45063BA7-237A-43B1-B799-7B000FFE7B78")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IMyCOMAPI
{
    void TestMethod();
}



[Guid("41EFFD90-9D94-4884-A8CC-9567B86FB79F")]    
[ClassInterface(ClassInterfaceType.None)]
[ProgId("MyCOMAPI")]  
public class MyCOMAPI : IMyCOMAPI
{
    public void TestMethod()
    {
        MessageBox.Show("COM method call");
    }
}

そして、このような他のプロジェクトでCOMを使用したい

[ComVisible(true)]
[Guid("45063BA7-237A-43B1-B799-7B000FFE7B78")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IMyCOMAPI
{
    void TestMethod();
}


public class Test
{
    public void TestCreate()
    {

        Guid Class_guid = new Guid("41EFFD90-9D94-4884-A8CC-9567B86FB79F");
        Type Classtype = Type.GetTypeFromCLSID(Class_guid);

        object comObject = Activator.CreateInstance(Classtype);


        IMyCOMAPI simple = comObject as IMyCOMAPI;

        if (simple != null)
        {
            simple.TestMethod();
        }
    }
}

ただし、このコードはインターフェイスをキャストしませんでした。methodinfo を使用して呼び出すことは既に知っていますが、インターフェイスを介して使いやすくする方法を探しています。

4

0 に答える 0