問題タブ [spring4d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
662 参照

delphi - Spring4D を使用したコンストラクター インジェクションでの "Unsatisfied constructor"

Spring4D のコンストラクター注入に苦労しています。特定のクラスで、インターフェイスの特定の実装を (名前で) コンストラクターに挿入したいと考えています。

これを見てください:

ここで、ServiceLocator を使用して印刷機のインスタンスを取得します。

そしてそれはうまくいきます。

次に、2 つ目の ListFactory を追加します。

登録を追加します

私のシードルプレスクラスをに変更します

問題は、TCiderPress の ctor が呼び出されないことです。

追加すると

EActivatorException: Unsatisfied contructor on type: TCiderPress が発生します

何がうまくいかないのですか?

編集:

次のように構築を委任すると、機能します。

EDIT2:

私は私のエラーを見つけました!インターフェイスのuses句にSpring.Container.Commonを含める必要がありました。

Delphi XE3 と Spring4D 1.1.3 を使用しています。

0 投票する
1 に答える
360 参照

delphi - IsFirst 関数と IsLast 関数を持つ列挙子を実装する方法は?

すべてのコレクションに Spring4D を使用しています。

ここで、列挙子の現在の値がコレクションの最初 (簡単) か最後 (難しい) かを知る必要がある状況があります。

CurrentIsFirst最初の値が渡されるとリセットされるローカルブール値を使用して実装できます。

ただし、簡単に実装する方法がわかりませんCurrentIsLast

メモリに収まらないほど多くの値が含まれている可能性があるため、遅延コレクションを処理できる必要があります。

どうすればそのようなCurrentIsLast機能を実装できますか?

0 投票する
1 に答える
387 参照

delphi - AOP と DI: アスペクトを認識したインターフェイスの依存関係が注入されたオブジェクトを作成する方法は?

Spring/4D フレームワークを使用して、アスペクトを認識したインターフェイスの依存関係が注入されたオブジェクトを作成したいと考えています。私の問題は、両方の部分を組み合わせる方法がわからないことです。一般的な考え方は次のとおりです。

  1. アスペクト レイヤー オブジェクトを作成し、2 つのインターフェイスを保持します。1 つは依存関係としてオブジェクトに渡し ( IAspect)、もう 1 つはアスペクトとしてオブジェクトに織り込みます ( IInterceptor)。

    /li>
  2. インターフェイス化された依存性注入オブジェクトを作成します。

    /li>
  3. 側面を織ります:

    /li>

これを解決するために、次の行に沿ってファクトリをカスタム コンストラクターに登録することを考えています。

Container: TContainer私の問題は、これをSpringからどのように登録するのですか?


: 以下のプログラムは、私が望むように動作し、GetValue呼び出しが実行されるアスペクト レイヤーを示します。カスタム オブジェクトの作成$Regionは、メイン ルーチンで行われます。Spring/4D フレームワークの DI コンテナーを使用するために、このプログラムをどのようにリファクタリングする必要がありますか?

出力:

0 投票する
1 に答える
318 参照

delphi - Spring4D でのマルチ インターフェース クラスの使用方法

私はSpring4Dを学んでいます.1つの質問があります。クラスが 1 つのインターフェイスのみを実装する場合、すべて明確です。

そして今、私は本当に幸せです。私は剣を持っていて、それを解放する必要はありません.

ただし、クラスが 2 つ以上のインターフェイスを実装している場合:

TSpikedShield のインスタンスを ServiceLocator に要求できますが、IWeapon または IShield のいずれかを選択する必要があります。しかし、次のような 2 つの方法で使用したい (または使用したくない場合)。

したがって、よくわからない場合は、TSpikedShiled のインスタンスを直接作成する必要があります (つまり、インターフェイスなしで)。

このクラスを使用する方法はありますが、自動魔法の無料で使用できますか?

(インターフェースがマルチインターフェースを実装できても問題はありませんが、デルファイでは許可されていません)

編集済み:多分そのように考えていますか?

0 投票する
2 に答える
574 参照

delphi - Interfaced パラメータを Spring4D に渡す方法は?

次の例があります。
Container に既に登録されている Interfaced 変数を渡して解決する簡単な方法はありますか?
または、この機能を使用する別の方法はありますか?


それが私のインターフェースです

クラスの実装

コンテナへの登録


したがって、これらのインターフェイスを作成する必要がある場合、この方法で呼び出すと、ネストされたパラメーターがコードを複雑にし、読むのが面倒になりました (そして見る)

0 投票する
2 に答える
294 参照

delphi - IEnumerable の IEnumerable を単一の IEnumerable に折りたたむ方法は?

2 つの列挙型しか連結できないため、これはコンパイルされませんTConcatIterator<T>が、列挙型の列挙型を連結する反復子が必要です。

Haskell には、concatこれを行う関数があります。

Delphi バージョンは次のようになります。

これをspring4dで実装するにはどうすればよいですか?