Я использую Castle Windsor для IoC. Это работает замечательно, но вдруг каждый раз, когда я пытаюсь запустить мое приложение, оно не во время ResolveAll
вызова:Замок 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:
Действительно странно это что он работает до сегодняшнего дня. Если я вернусь к версии до того, как она начнет это делать, даже на прошлой неделе, я все равно получаю эту ошибку. Я попытался перезагрузить и т. Д. Кто-нибудь видел это раньше?
EDIT:
Вот как я регистрирующий те 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