我有一个LoggedTextWriter,我想将其注入到LinqToSql DataContext类的Log属性中。
我的自定义LoggedTextWriter有一个构造函数,它接受ICustomWriter,但我不知道如何将它注入Log属性。
Bind<DataContext>()
.ToSelf()
.InTransientScope()
.WithConstructorArgument("connection", @"Data Source=localhost\sqlexpress2008;Initial Catalog=MyDB;Integrated Security=True")
.WithPropertyValue("ObjectTrackingEnabled", true)
.WithPropertyValue("Log", **<HowDoIGetAnInstanceOfLoggedTextWriter>**);
Bind<LoggedTextWriter>().ToSelf().InTransientScope();
Bind<ICustomWriter>().To<MyCustomWriter>().InTransientScope();
答案 0 :(得分:1)
喜欢这个!使用ToMethod绑定,上下文(x下面)传递给你的lambda。您可以使用它来查找内核并查找您的日志。这与AutoFac和Funq的工作方式非常相似。此外,transient是默认范围,因此如果您愿意,可以将其从绑定中删除。
Bind<LoggedTextWriter>().ToSelf();
Bind<ICustomWriter>().To<MyCustomWriter>();
Bind<DataContext>().ToMethod(x =>
new DataContext(@"Data Source=localhost\sqlexpress2008;Initial Catalog=MyDB;Integrated Security=True")
{
ObjectTrackingEnabled = true,
Log = x.Kernel.Get<LoggedTextWriter>()
});