我们有一个也是COM服务器的应用程序,可以作为独立运行,也可以由COM客户端自动运行。
COM类以下列方式声明:
type
TCommandApp = class(TAutoObject, IConnectionPointContainer, ICommandApp)
初始化部分如下:
TAutoObjectFactory.Create(ComServer, TCommandApp, Class_CommandApp,
ciSingleInstance, tmApartment);
创建TCommandApp
的实例。问题是如何引用TCommandApp
创建的TAutoObjectFactory
实例? (称其方法等)。
答案 0 :(得分:4)
如果您想以与COM相同的方式创建TCommandApp
实例,那么您应该调用工厂的CreateInstance
方法,该方法来自IClassFactory
接口。
var
Factory: IClassFactory;
App: ICommandApp;
Factory := TAutoObjectFactory.Create(...);
OleCheck(Factory.CreateInstance(nil, ICommandApp, App));
或者,您可以直接调用构造函数:
var
Factory: TComObjectFactory;
App: TCommandApp;
Factory := TAutoObjectFactory.Create(...);
App := TCommandApp.CreateFromFactory(Factory, nil);