Delphi:引用由TAutoObjectFactory创建的类实例

时间:2013-02-06 13:29:53

标签: delphi object automation

我们有一个也是COM服务器的应用程序,可以作为独立运行,也可以由COM客户端自动运行。

COM类以下列方式声明:

type
  TCommandApp = class(TAutoObject, IConnectionPointContainer, ICommandApp)

初始化部分如下:

TAutoObjectFactory.Create(ComServer, TCommandApp, Class_CommandApp, 
                          ciSingleInstance, tmApartment);

创建TCommandApp的实例。问题是如何引用TCommandApp创建的TAutoObjectFactory实例? (称其方法等)。

1 个答案:

答案 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);