我很想能夠在Delphi這種方式代碼,只需註釋字段:是否有一個基於屬性的注入Delphi的依賴注入框架?
type
TMyClass = class
private
[Inject]
Factory: ISomeFactory;
...
end;
或歸因二傳手
type
TMyClass = class
private
FFactory: ISomeFactory;
[Inject]
procedure SetFactory(const AFactory: ISomeFactory);
...
public
property Factory: ISomeFactory read FFactory write SetFactory;
end;
背景:我將舊的代碼到面向服務的體系結構,並發現引用服務層總是導致結構,如
DataModule1.ServiceLayerInstance1.SubSystemN.InvokeSomething(Params, ...);
這可能是像
type
Form1 = class(TForm1)
private
[Inject]
SubsystemN: ISubsystemN;
...
end;
...
SubsystemN.InvokeSomething(Params, ...);
避免在使用基於屬性注入。儘可能使用構造函數注入。 – Steven
@Steven這可能取決於依賴。如果沒有它,絕對不能工作,那麼是的,構造函數更合適。如果沒有它可以合理地工作,注入財產是使其成爲可選項的一種方法。 – R0MANARMY
@ R0MANARMY:但是您仍然不應該使用屬性來使用屬性注入。這迫使應用程序對容器進行依賴,但應用程序應該沒有意義。 – Steven