2010-10-26 4 views
4

У меня есть LoggedTextWriter, который я хотел бы добавить в свойство Log класса LinqToSql DataContext.Ввод объекта при создании объекта

У моего пользовательского 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

Мы не можем помочь вам найти экземпляр в вашей кодовой базе ... – leppie

+0

Используете ли вы каркас IoC? –

ответ

1

Нравится это! Привязка с использованием ToMethod, контекст (x ниже) передается на ваш лямбда. Вы можете использовать его для поиска ядра и поиска своего журнала. Это очень похоже на работу AutoFac и Funq. Кроме того, переходный режим по умолчанию является видимым, поэтому вы можете удалить его из своих привязок, если хотите.

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>() 
    });