我正在使用Castle Windsor作爲IoC。它一直工作很好,但突然我嘗試運行我的應用程序每一次,它ResolveAll
通話過程中失敗:Castle Windsor ResolveAll類型參數異常失敗
var resolved = container.ResolveAll<IValidator>();
它拋出該異常:
System.ArgumentException occurred
Message=The number of generic arguments provided doesn't equal the arity of the generic type definition.
Parameter name: instantiation
Source=mscorlib
ParamName=instantiation
StackTrace:
at System.RuntimeType.MakeGenericType(Type[] instantiation)
at Castle.MicroKernel.Handlers.DefaultGenericHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired) in c:\TeamCity\buildAgent\work\1ab5e0b25b145b19\src\Castle.Windsor\MicroKernel\Handlers\DefaultGenericHandler.cs:line 51
InnerException:
真正奇怪的是直到今天它一直在努力。如果我在開始執行此操作之前回滾到某個版本,即使回到上個星期,我仍然會收到此錯誤。我試過重新啓動等。有沒有人看過這個?
編輯:
這裏是我如何註冊IValidator的:
private void registerFromAssembly(IWindsorContainer container, Assembly assembly)
{
container.Register(
AllTypes.FromAssembly(assembly)
.BasedOn<IValidator>()
);
}
這裏是我如何註冊IPresenterResolver服務:
container.Register(
Component.For<IPresenterResolver>()
.ImplementedBy<CommandLineArgumentPresenterResolver>()
);
我不得不刪除這兩個來讓應用程序現在運行。
正如錯誤所述,服務類型和實現類型之間存在類型參數計數不匹配。你可以發佈你的註冊? – 2010-11-23 00:28:31