私は依存性注入について学び始め、自分自身の(簡単な)ロギングファサードを紹介することにしました。これまでのところ、Ninjectを使ってNLogとlog4netの基本的な機能を扱うロギングファサードがあります。 (私はNinjectが独自のロギングファサードを持っていることを知っていますが、これは学習の練習です)Ninjectはフォーム作成後にwinformに挿入しますか?
しかし、私は問題に遭遇しました。私がやりたいことは、私がRichTextBox(winformsを使ってIm)にファイルに記録するものを複製することです。私はこれをNLogとlog4netを使って直接行うことができます。私が持っている問題は、Ninjectがインターフェイス上でワイヤを張ったときに、winformのrichtextboxが作成され、結果としてロガーがrichtextboxを見つけないうちにロガーの実装を作成するということです。
私がする必要があると思うのは、フォームを作成してから、Ninjectでロガーを作成してフォームに挿入することですが、これをどうするかわかりません。私は完全に間違った方法でこれを見ているかもしれませんが?
一緒にこれを結びつけるために使用してコードイムは以下を参照してください:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
IKernel kernel = new StandardKernel(new DI.NLog.Logger());
var form = kernel.Get<Form1>();
Application.Run(form);
}
}
とロガーが注入された場合、私のフォームのコンストラクタです。
public Form1(ILog log)
{
InitializeComponent();
_log = log;
}
すべてのヘルプやアドバイスをいただければ幸いです。
まず、フォームクラスがILog
を実装します はここ
あなたの答えをありがとうYacoub、私はあなたがこの特定の問題のために、純粋なDIに後退する方が簡単かもしれないと思いますが、特に満足できるものは見つけられません。それが他の人にとって興味があれば、私が探していたのと同じ結果を得るための回避策を見つけ出しました:コンソールにログを記録し、出力をrichtextboxに再ルーティングするためのロガーを作成しました – Reznoir