1

依存性注入 (この場合はロギング依存性) を介してプロパティを設定する場合、依存オブジェクトの外部のオブジェクトがそのプロパティを呼び出せないようにゲッターを保護するのは「通常」ですか?

すなわち

public ILogger Logger { protected get; set; }

public ILogger Logger { get; set; }

(私は実際にこれらでnull オブジェクト パターンを使用していますが、それは重要ではありません)。

私はコンストラクター注入を使用したくありませんが、パブリック プロパティ注入を介して、他のオブジェクトがこのオブジェクトのロガーを呼び出すことは「正しく」ありません。

上記は私が行っていることですが、奇妙に思えます。

4

3 に答える 3

1

なぜロガーのゲッターが必要なのですか?

注入するオブジェクトは、注入先の実装の詳細である必要があります。したがって、一般的には、そのようなアイテムのセッターが必要です。

于 2012-10-12T04:23:26.113 に答える
0

一般に、ゲッター メソッドは public とマークされ (ただし、ゲッターも避け、オブジェクトに対して明確に定義されたアクションをメソッドとして公開する純粋主義者もいます)、セッター メソッドは回避されるか、DI フレームワークが設定できるようにのみ保護/プライベートとマークされます。引数なしのデフォルト コンストラクターを使用してオブジェクトを構築した後の、オブジェクトの値。DI フレームワークは、リフレクションを使用してプロテクト/プライベート メソッドにアクセスできるため、セッターを公開しないという目的にも対処できます。

于 2012-10-12T04:23:02.253 に答える