IoC, который я использовал, - Ninject. Наилучший способ, который я нашел до сих пор, - это воспользоваться ServiceLocator, предоставляемым парнями из Microsoft Patterns and Practices:
internal class YourPostInsertListener : IPostInsertEventListener
{
IKernel Kernel
{
get
{
return ServiceLocator.Current.GetInstance<IKernel>();
}
}
IPersistentAuditor
{
get
{
return Kernel.Get<IPersistentAuditor>();
}
}
// ... Rest of class
}
В классе, который устанавливает ваш контейнер IoC, вы должны сделать это:
ServiceLocator.SetLocatorProvider( () => new NinjectServiceLocator( kernel ) );