SystemWrapper和Castle Windsor的问题

问题描述 投票:-1回答:1

我正在尝试使用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

[如果有人之前已经解决了这个问题,请告诉我。如果不能,那么我将继续手动编写包装器。

谢谢

c# .net castle-windsor ioc-container systemwrapper
1个回答
0
投票

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

Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)
© www.soinside.com 2019 - 2024. All rights reserved.