SystemWrapper和Castle Windsor的问题



我一直在尝试使用SystemWrapper来模拟我自己编写包装器的文件IO和其他标准MS方法。然而,我发现我使用的国际奥委会温莎城堡(Castle Windsor(对此有问题

我专门使用IDirectoryInfo和DirectoryInfoWrap来实现它

container.Register(Component.For<IDirectoryInfo, DirectoryInfoWrap>());

我甚至做过这样的事:

container.Register(Component.For<IDirectoryInfo>().ImplementedBy<DirectoryInfoWrap>());

但当我运行我的应用程序时,我会得到这个:

无法创建组件"SystemWrapper.IO.DirectoryInfoWrap"要满足的依赖关系。

"SystemWrapper.IO.DirectoryInfoWrap"正在等待以下内容依赖项:-未注册的服务"System.IO.DirectoryInfo"。-未提供参数"path"。你忘了设置依赖项了吗?

这对我来说毫无意义。为什么它认为常规的DIrectoryInfo是一项需要注册的"服务"?我试着用DirectoryInfoWrap注册DirectoryInfo,但结果是:

类型System.IO.DirectoryInfo和SystemWrapper.IO.Directory InfoWrap是不相关的。这是不允许的。你确定要制作吗同一组件上的两个服务?参数名称:x

如果有人以前解决过这个问题,请告诉我。如果做不到,我就继续手工写包装纸。

感谢

所以答案很简单。System Wrap构造函数需要DirectoryInfo参数。我从未用Windsor处理过构造函数参数。经过研究,这就是解决方案:

Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)

最新更新