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
Using tlbimp.exe you can generate an assembly from your COM component that can be used in .NET code
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.
You should be able to create a wrapper class to your installed COM component using TLBImp then run your tests against that. You'll basically be writing a .Net assembly, installing that to COM then testing against the wrapper class so your tests will be routed as if it was called by a COM component