-1

我一直在尝试使用 SystemWrapper 来模拟文件 IO 和我正在为其编写自己的包装器的其他标准 MS 方法。但是,我发现我正在使用的国际奥委会温莎城堡存在问题。

我正在专门使用实现它的 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

如果有人以前解决过这个问题,请告诉我。如果不能,那么我将继续手工编写包装器。

谢谢

4

1 回答 1

0

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

Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)
于 2020-03-04T15:46:26.993 回答