我正在尝试使用SystemWrapper来模拟文件IO和我为其编写自己的包装器的其他标准MS方法。但是,我发现我正在使用的IOC城堡温莎城堡存在问题。
我专门与实现它的IDirectoryInfo和DirectoryInfoWrap一起使用。我已经像其他界面一样进行了注册:
container.Register(Component.For<IDirectoryInfo, DirectoryInfoWrap>());
我什至这样做:
container.Register(Component.For<IDirectoryInfo>().ImplementedBy<DirectoryInfoWrap>());
但是当我运行我的应用程序时,我得到了:
无法创建组件'SystemWrapper.IO.DirectoryInfoWrap',因为它具有要满足的依赖性。
''SystemWrapper.IO.DirectoryInfoWrap'正在等待以下内容依赖项:-未注册的服务“ System.IO.DirectoryInfo”。-未提供参数“路径”。您忘记设置依赖项了吗?
这对我来说毫无意义。为什么会认为常规DIrectoryInfo是需要注册的“服务”?对于傻笑,我尝试使用DirectoryInfoWrap注册DirectoryInfo,但这给了我:
类型System.IO.DirectoryInfo和SystemWrapper.IO.DirectoryInfoWrap没有关系。那是不允许的。您确定要制作它们吗两种服务都在同一组件上?参数名称:x
[如果有人之前已经解决了这个问题,请告诉我。如果不能,那么我将继续手动编写包装器。
谢谢
所以答案很简单。 System Wrap构造函数需要DirectoryInfo参数。我从未使用Windsor处理构造函数参数。研究这是解决方案之后:
Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)