我一直在尝试使用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)