Is it possible to test a COM-exposed assembly from .NET?

前端 未结 3 1884
灰色年华
灰色年华 2020-12-14 04:49

I have a .NET assembly which I have exposed to COM via a tlb file, and an installer which registers the tlb. I have manually checked that the installer works correctly and t

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-14 05:08

    The Closest I've gotten to a solution is something like the following:

    using System;
    class ComClass
    {
        public bool CallFunction(arg1, arg2)
        {
            Type ComType;
            object ComObject;
    
            ComType = Type.GetTypeFromProgID("Registered.ComClass");
            // Create an instance of your COM Registered Object.
            ComObject = Activator.CreateInstance(ComType);
    
            object[] args = new object[2];
            args[0] = arg1;
            args[1] = arg2;
    
            // Call the Method and cast return to whatever it should be.
            return (bool)ComType.InvokeMember("MethodToCall", BindingFlags.InvokeMethod, null, ComObject, args))
        }
    }
    

    It's not very pretty, but I think gets the point across. You could of course put the ComObject instantiation into a constructor and wrap the rest of the calls to the object, but probably not necessary for test code.

提交回复
热议问题