SystemWrapper 和 Castle Windsor 的问题
Issue with SystemWrapper and Castle Windsor
我一直在尝试使用 SystemWrapper 来模拟文件 IO 和我正在为其编写自己的包装器的其他标准 MS 方法。但是,我发现我正在使用的 IOC Castle Windsor 存在问题。
我专门使用实现它的 IDirectoryInfo 和 DirectoryInfoWrap。我已经像其他界面一样注册了:
container.Register(Component.For<IDirectoryInfo, DirectoryInfoWrap>());
我什至这样做过:
container.Register(Component.For<IDirectoryInfo>().ImplementedBy<DirectoryInfoWrap>());
但是当我 运行 我的应用程序时,我得到了这个:
Can't create component 'SystemWrapper.IO.DirectoryInfoWrap' as it has
dependencies to be satisfied.
'SystemWrapper.IO.DirectoryInfoWrap' is waiting for the following
dependencies:
- Service 'System.IO.DirectoryInfo' which was not registered.
- Parameter 'path' which was not provided. Did you forget to set the dependency?
这对我来说毫无意义。为什么它认为常规的 DIrectoryInfo 是需要注册的 "service"?为了咯咯地笑,我尝试用 DirectoryInfoWrap 注册 DirectoryInfo,但这给了我这个:
Types System.IO.DirectoryInfo and SystemWrapper.IO.DirectoryInfoWrap
are unrelated. That is not allowed. Are you sure you want to make them
both services on the same component? Parameter name: x
如果有人以前解决过这个问题,请告诉我。如果不行那我就继续手写wrapper
谢谢
所以答案很简单。 System Wrap 构造函数需要一个 DirectoryInfo 参数。我从来没有用 Windsor 处理过构造函数参数。经过研究,这是解决方案:
Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)
我一直在尝试使用 SystemWrapper 来模拟文件 IO 和我正在为其编写自己的包装器的其他标准 MS 方法。但是,我发现我正在使用的 IOC Castle Windsor 存在问题。
我专门使用实现它的 IDirectoryInfo 和 DirectoryInfoWrap。我已经像其他界面一样注册了:
container.Register(Component.For<IDirectoryInfo, DirectoryInfoWrap>());
我什至这样做过:
container.Register(Component.For<IDirectoryInfo>().ImplementedBy<DirectoryInfoWrap>());
但是当我 运行 我的应用程序时,我得到了这个:
Can't create component 'SystemWrapper.IO.DirectoryInfoWrap' as it has dependencies to be satisfied.
'SystemWrapper.IO.DirectoryInfoWrap' is waiting for the following dependencies: - Service 'System.IO.DirectoryInfo' which was not registered. - Parameter 'path' which was not provided. Did you forget to set the dependency?
这对我来说毫无意义。为什么它认为常规的 DIrectoryInfo 是需要注册的 "service"?为了咯咯地笑,我尝试用 DirectoryInfoWrap 注册 DirectoryInfo,但这给了我这个:
Types System.IO.DirectoryInfo and SystemWrapper.IO.DirectoryInfoWrap are unrelated. That is not allowed. Are you sure you want to make them both services on the same component? Parameter name: x
如果有人以前解决过这个问题,请告诉我。如果不行那我就继续手写wrapper
谢谢
所以答案很简单。 System Wrap 构造函数需要一个 DirectoryInfo 参数。我从来没有用 Windsor 处理过构造函数参数。经过研究,这是解决方案:
Component.For<IDirectoryInfo, DirectoryInfoWrap>().DependsOn(Dependency.OnValue("directoryInfo", directoryInfo)