Вся система COM вращается вокруг интерфейсов. По сути, вам нужно изменить свои классы в сборке, чтобы реализовать интерфейсы, содержащие методы, которые вы хотите вызвать. После этого вы сможете создать экземпляр каждого класса в сборке как интерфейс из Delphi и вызывать методы таким образом.
Например:
// In the assembly
public interface IMyInterface
{
void DoSomething();
}
public class MyImplementingClass : IMyInterface
{
void DoSomething()
{
//
}
}
Теперь ваш PAS-файл получит объявление интерфейса, включая метод DoSomething и пару идентификаторов GUID.
Чтобы вызвать этот метод из Delphi, вы должны использовать код, подобный следующему:
procedure CallDoSomething;
var
hr: HResult;
Intf: IMyInterface;
TypeLib: ITypeLib;
begin
OLECHECK(LoadRegTypeLib(LIBID_MyAssembly, MyAssemblyMajorVersion, MyAssemblyMinorVersion, 0, TypeLib));
Intf := nil;
hr := CoCreateInstance(CLASS_MyImplementingClass, nil, CLSCTX_INPROC_SERVER, IID_IMyInterface, Intf);
if Failed(hr) then
raise Exception.CreateFmt('Failed to create instance of interface. (%x)', [hr]);
Intf.DoSomething();
end;