我是 NLog 的用户,我正在创建自己的自定义目标。这个目标将使用一些存储库(使用 NHibernate)来持久化日志条目。
是否可以使用任何 IoC 框架(最好是 StructureMap)注入(inject)自定义目标所需的构造函数依赖项?
问候,
Ĵ
最佳答案
我想为人们提供一些背景信息,因为我起初对你的回答 JC 感到困惑。
public Program {
//
// Static constructor
//
static Program() {
// Set up Ninject
var kernel = new StandardKernel();
// Register bindings
RegisterServices(kernel);
// Set up Ninject logging config
NLog.Config.ConfigurationItemFactory.Default.CreateInstance =
(type) => kernel.TryGet(type);
// Continue on!
}
private static void RegisterServices(IKernel kernel) {
// bind services!
kernel.Bind<IMyClass>().To<MyClass>();
}
}
[Target("Custom")]
public class CustomTarget : TargetWithLayout {
private IMyClass _myClass;
public CustomTarget(IMyClass myClass) {
// This will be injected!
_myClass = myClass;
}
}
这显示了如何设置实例创建以及它如何与 NLog 结合在一起。希望对其他人有所帮助!
关于.net - NLog:自定义目标的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6018721/