6

フィールドに注釈を付けるだけで、このように 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, ...);
4

2 に答える 2

9

はいあります。Delphi Spring フレームワーク

http://www.spring4d.com/

正確にこれを行います。[注入]属性を持つ。

1 つの注意点 -- これを使用するには、属性が定義されているコードに Spring ユニットを含める必要があります。それ以外の場合、コンパイラは属性を無視します。

于 2012-05-25T14:22:57.683 に答える
2

この目標は、Emballo OpenSource プロジェクトで達成できます。

Google Code のプロジェクトを参照してください: http://code.google.com/p/emballo/wiki/WhyDependencyInjection

于 2012-05-25T15:40:12.157 に答える