は私がSimple Injectorのコンテナがこのmethodシンプルインジェクタにオブジェクトファクトリに条件を登録する方法がありますか?
public void RegisterConditional<TService, TImplementation>(
Predicate<PredicateContext> predicate
)
持って見しかし、私は別のサービスのために同じ実装の異なるオブジェクトを使用したいので、私はこの
public void RegisterConditional<TService>(
Func<TService> instanceCreator,
Predicate<PredicateContext> predicate
)
のようになります。必要なメソッドをオーバーロードされたものを
しかし、SimpleInjectorはそれを持っていません。私はインスタンスの作成者にサービスの条件を登録するための他のコンテナのメソッドを見つけることを試みています。 他にもできることはありますか?
または、私は良いデザインではないと考えているので、開発者は実装していませんか?
編集:例と詳細な質問を追加しました。
例CSVFileScanner
が作成なったときとXMLFileScanner
コンストラクタに渡さlocatorForXMLFileScanner
オブジェクトがXMLFileScanner
が作成なったときに、私はCSVFileScanner
コンストラクタに渡さlocatorForCSVFileScanner
オブジェクトを取得するためにそれらを登録する方法の例のソースコードから
class CSVFileScanner
{
public CSVFileScanner(IFileLocator fileLocator) { }
}
class XMLFileScanner
{
public XMLFileScanner(IFileLocator fileLocator) { }
}
class DefaultLogFileLocator: ILogFileLocator
{
public DefaultLogFileLocator(string directoryPath, string searchPattern) { }
}
var locatorForCSVFileScanner = new DefaultLogFileLocator("C:\CSVLogDir", "*.csv")
var locatorForXMLFileScanner = new DefaultLogFileLocator("C:\XMLLogDir", "*.xml")
、 ?
は「私は別のサービスのために同じ実装の異なるオブジェクトを使用したいです」。あなたはあなたの質問を言い換えることができますか?私はあなたが何を望んでいるのか理解していません。 – Steven
@スティーブン私は質問した内容を説明しようとしました。 – wrongite