我正在使用 HTTP 服务器,并且正在使用 IndyTIdHTTPWebBrokerBridge
和TWebModule
. 我将所有服务器功能封装到一个组件中,这包括 Indy 服务器组件及其相应的 Web 模块。但是,我在弄清楚如何让 Web 模块知道调用它的组件时遇到了一些问题。
假设我有这个组件:
type
TMyComponent = class(TComponent)
private
FServer: TIdHTTPWebBrokerBridge;
end;
implementation
uses
MyWebModule;
我知道我必须通过设置请求处理程序来初始化它,我已经通过向initialization
这个单元添加一个部分来处理它:
initialization
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass:= WebModuleClass;
然后我将 Web Module 类放在一个单独的单元中:
uses
MyWebServer;
type
TMyWebModule = class(TWebModule)
private
FOwner: TMyComponent;
end;
请注意我在此 Web 模块中的私有字段FOwner: TMyComponent
。这是我无法确定去哪里的地方。如何将其分配给适当的所有者?Web Module 是由 Indy HTTP Server 自动创建和管理的,据我所知,我没有任何控制权来设置这样的东西。
我需要访问其所有者的原因是因为我在那里设置了 Web 模块需要能够读取的属性。例如,我在我的组件上拥有的一个属性RootDir
是一个根目录,可以在其中读取/写入文件。我需要能够从 Web 模块中读取此属性。
如何使 Web 模块能够读取其所有者组件的属性?或者一般来说,我如何将这个私有字段分配给FOwner
我的组件实例,从它被实例化的地方?