C# 将Castle对象作为Resolve中的参数发送
我有一个采用以下参数的类生成器:C# 将Castle对象作为Resolve中的参数发送,c#,castle-windsor,C#,Castle Windsor,我有一个采用以下参数的类生成器: public FolderAndFileManagment(IWindsorContainer container) { var config = container.Resolve<IEcommerceConfiguration>(); ReadFolderLocation = config.ReadFolderLocation; DropFolderLocation = config.DropFolderLocation
public FolderAndFileManagment(IWindsorContainer container)
{
var config = container.Resolve<IEcommerceConfiguration>();
ReadFolderLocation = config.ReadFolderLocation;
DropFolderLocation = config.DropFolderLocation;
directoryRepository = container.Resolve<IDirectoryRepository>();
}
公共文件夹和文件管理(IWindsorContainer)
{
var config=container.Resolve();
ReadFolderLocation=config.ReadFolderLocation;
DropFolderLocation=config.DropFolderLocation;
directoryRepository=container.Resolve();
}
组件的注册如下所示:
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;
}
WindsorContainer.Register(Component.For().ImplementedBy().Named(“folderandfilemanagement”)
.Attribute(“id”).Eq(“文件夹和文件管理”)
.Attribute(“service”).Eq(typeof(ifolderandfilemanagement).AssemblyQualifiedName)
.Attribute(“type”).Eq(typeof(folderandfilemanagement).AssemblyQualifiedName)
(生活方式,短暂),;
对解析器的调用如下所示:
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;
}
公共静态bool初始化(IWindsorContainer)
{
_容器=容器;
var config=_container.Resolve();
_filemanagement=\u container.Resolve(\u container);
返回true;
}
但在使用resolve函数时,出现以下错误:
缺少依赖项。
组件FolderAndFileManager对Castle.Windsor.IWindsorContainer有依赖关系,无法解析该依赖关系。
确保依赖项在容器中作为服务正确注册,或作为内联参数提供
如何修复此问题?您正在使用此超负荷的
解决方法:
T Resolve<T>(object argumentsAsAnonymousType);
您应该像这样调用Resolve
:
fileManagment = _container.Resolve<IFolderAndFileManagment>(
new { container = _container });
filemanagement=\u container.Resolve(
新的{container=_container});
您正在进行某种您自己的实现。你为什么不用它呢?它非常强大