2012-03-13 6 views
0

私はC#と統一IOCコンテナを使用しています。異なるオブジェクトを同じインタフェースで登録するには

私は、同じインターフェースで複数のオブジェクトを登録する必要がある状況を考え出しました。このような状況では、これらの必要なオブジェクトを1つに登録/解決するにはどうすればよいですか?

例えば

私は同じのviewmodelにロガーの2つの異なるバージョンを必要とする

クラスDatabaseLogger:ILoggerです{...} クラスFileLogger:ILoggerです{...}

どのように登録することができますし、私のviewmodelでこれらの両方を解決しますか?

私は、次の操作を行うことができます:

クラスDatabaseLogger:IDatabaseLogger {...} クラスFileLogger:IFileLogger {...}

はこれが最善の方法ですが?

答えて

0

log4netまたはエンタープライズライブラリロギングアプリケーションブロックには、複数のターゲット(ファイル、イベントログ、データベース、コンソールなど)に出力を書き込む独自の手段があります。

この機能は他の成熟したログライブラリからも期待されます。あなたのメッセージが終わるこれらのフレームワークの構成の問題です。

したがって、独自のロガークラスを作成する必要はありません。そして、単一の実装(IFileLogger,IDatabaseLoggerIEventLogLoggerIConsoleLogger、...)でインターフェイスを作成すると、インターフェイスはかなりuseless as a means of abstractionになります。

このようなライブラリを使用しない場合は、代わりに実績のあるソリューションに切り替えることを検討してください。

関連する問題