c# - SystemWrapper 和 Castle Windsor 的问题
问题描述
我一直在尝试使用 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
如果有人以前解决过这个问题,请告诉我。如果不能,那么我将继续手工编写包装器。
谢谢
解决方案
所以答案很简单。System Wrap 构造函数需要 DirectoryInfo 参数。我从来没有用 Windsor 处理过构造函数参数。经过研究,这是解决方案:
Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)
推荐阅读
- angular - Angular ContentChildren 跨模块获取指令 Inputs 和 TemplateRef
- haskell - Haskell中关联类型的约束
- spring-boot - Springboot 招摇与 JsonView
- jquery - 如何将外部 jquery 库导入 webpack?
- google-chrome - Chrome 浏览器 - 启用集成 Windows 身份验证 - 自动登录
- python - 使用 Python 输出多个随机密码
- react-native - 仅反应原生构建(android)
- javascript - 如何使用 ajax 通信 python-mysql 和 js?
- c# - 在 .Net Dynamics CRM 应用程序中保存要联系的父帐户
- asp.net-core - 常规方法和异步方法有什么区别(OnGet vs OnGetAsync)