私はPRISMでアプリケーションを構築しています。このアプリケーションは今後数年間にわたりgrootする予定ですので、モジュラとIoCを念頭に置いて設定します。 このアプリケーションでは、現在、ロギングメカニズムとしてNlogを実装しています。PRISMは解決するためにタイプを使用する工場とのインターフェイスを解決します
私はまた、工場
public interface ILogFactory
{
ILog Initialize(Type type);
}
ためのインタフェースを作成している
public interface ILog
{
void Log(LogLevel loglevel, string format);
void Log(LogLevel loglevel, string format, params object[] args);
void Log(LogLevel loglevel, Exception exc, string format, params object[] args);
}
ロガーのためのインタフェースを作成している私のアプリケーション全体を通してNLogへの参照を追加する必要はありませんのでファクトリは、そのクラスに固有のロガーを作成するために使用できるTypeパラメータを受け取ります。今、私は目標型クラスを使用してインスタンスを持つことを望むILogを使うつもりです。
public class ClassA
{
private ILog Logger { get; set;}
public ClassA(Ilog logger)
{
Logger = logger;
}
}
どのように私はこの場合のtypeof演算(にClassA)中でILogFactory.Initialize(タイプtype)を使用しているのIlogを使用するクラスの決意にPRISMに私ILogFactoryを配線することができます。
あなたは単にClassogへの依存としてILogFactoryを注入することができます。クラスaはちょうどILogの実装であるファクトリのインスタンスを使用しています。 – Xeun
私は現在、それを使用していますが、動作しますが、Ilogにクラスを簡単にする必要があります。 –
はい、達成したいことを理解していますが、そのようには機能しません。 あなたのクラスはFactoryに依存しています。ILoggerを作成する方法はわかりませんが、Factoryはそうしています。そのため、Factoryはあなたのクラスに依存しています。私はこの問題をちょっと考えすぎていると思う。クラスが工場に依存するようにして、あなたは行くのが良いです – Xeun