想象一下,我有一个包含 2 个类库项目的解决方案:project1 公开了一些接口,project2 公开了一些接口,并且(!)使用了 project1 的接口。我也有 project3,它设置了具有所有必要接口绑定的 Ninject 内核模块。如下所示:
public class Dependencies : NinjectModule
{
public override void Load()
{
Bind<IFileSystemWatcherFactory>().To<FileSystemWatcherFactory>();
Bind<IFileSystemWatcher>().To<FileSystemWatcher>();
Bind( typeof( IRepository<> ) ).To( typeof( NHibernateRepository<> ) );
Bind<IFileSystemHelper>().To<FileSystemHelper>();
Bind<IFileSystemInfoAdapter>().To<FileSystemInfoAdapter>();
Bind<IFolderMonitor>().To<FolderMonitor>();
Bind<IFolderMonitorBrowser>().To<FolderMonitor>();
Bind<IFileManager>().To<FileManager>();
}
}
public class DiContainer
{
private static IKernel _container;
public static IKernel Instance
{
get
{
if ( _container == null )
_container = new StandardKernel( new Dependencies() );
return _container;
}
}
private DiContainer() { }
}
为了设置绑定,project3 需要引用 project1 和 project2。为了使用 DI 容器,project2 需要对 project3 的引用 - 但我无法添加它,因为 VS 显示添加此引用会导致循环依赖的错误消息。
如何处理那个问题?我应该在 XML 中配置依赖项吗?