我有一个类构建器,它使用以下参数:
public FolderAndFileManagment(IWindsorContainer container)
{
var config = container.Resolve<IEcommerceConfiguration>();
ReadFolderLocation = config.ReadFolderLocation;
DropFolderLocation = config.DropFolderLocation;
directoryRepository = container.Resolve<IDirectoryRepository>();
}
组件的注册如下所示:
WindsorContainer.Register(Component.For<IFolderAndFileManagment>().ImplementedBy<FolderAndFileManagment>().Named("FolderAndFileManagment")
.Attribute("id").Eq("FolderAndFileManagment")
.Attribute("service").Eq(typeof(IFolderAndFileManagment).AssemblyQualifiedName)
.Attribute("type").Eq(typeof(FolderAndFileManagment).AssemblyQualifiedName)
.LifeStyle.Transient);
对解析器的调用如下:
public static bool Initialize(IWindsorContainer container)
{
_container = container;
var config = _container.Resolve<IEcommerceConfiguration>();
_fileManagment = _container.Resolve<IFolderAndFileManagment>(_container);
return true;
}
但是使用resolve函数时出现以下错误:
缺少依赖性。 组件FolderAndFileManagment依赖于Castle.Windsor.IWindsorContainer,无法解析。 确保依赖项在容器中作为服务正确注册,或者作为内联参数提供。
我该如何解决这个问题?
答案 0 :(得分:1)
您正在使用Resolve
的重载:
T Resolve<T>(object argumentsAsAnonymousType);
因此,您需要创建一个anonymous type,其字段名称与您尝试解析的类型的构造函数中的参数相匹配。由于您的构造函数是:
public FolderAndFileManagment(IWindsorContainer container)
您应该像这样致电Resolve
:
fileManagment = _container.Resolve<IFolderAndFileManagment>(
new { container = _container });
答案 1 :(得分:0)
你正在做一些你自己TypeFactory的实现。为什么不使用它?它非常强大。