网页上调用
set obj=Server.Create("ProductShow.Product");
调试发现,并没有执行TProduct.Create
请教下:Server.Create("ProductShow.Product");过程发生了什么?
type
  TProduct = class(TAutoObject, IProduct)
  ………………//定义一些成员,包括Create
end; implementationinitialization              //对这里面得内容不是太明白
  TAutoObjectFactory.Create(ComServer, TProduct, Class_Product,
    ciMultiInstance, tmApartment);
end.

解决方案 »

  1.   

    Server.Create("ProductShow.Product");创建对象的实例
      

  2.   

    晕,我知道Server.Create是创建对象得实例
    我想知道创建过程中如何调用类得构造函数(比如有多个构造函数得话,如何指定调用某一个)
      

  3.   

    这里只是创建一个类厂,
    并注册它负责的类的相关信息,
    该类厂可以根据请求的iid创建类的实例,
    由于TProduct在该类厂中注册过了,
    所以当有请求(CreateComObject)时类厂便可调用TProduct.CreateFromFactory生成类的实例。
    vcl中相关代码如下:
    function TComObjectFactory.CreateComObject(const Controller: IUnknown): TComObject;
    begin
      Result := TComClass(FComClass).CreateFromFactory(Self, Controller);
    end;所以通过框架代码实现的类其构造函数已固定,
    但你可以在类的Initialize代码中进行必要的初始化