У меня есть динамически сгенерированная сборка, которая была создана с использованием Reflection.Emit. Я тогда пытаюсь зарегистрировать типы контроллеров с этой сборкой, используя Виндзор следующим образом:Can Castle Windsor регистрирует типы от динамических сборок?
WindsorContainer.Register(Classes.FromAssembly(myDynamicAssembly).BasedOn<ApiController>().LifestylePerWebRequest());
Когда я пытаюсь перейти к конечной точке, указанной в одном из этих контроллеров я получаю следующее сообщение об ошибке:
[NotSupportedException: The invoked member is not supported in a dynamic assembly.]
System.Reflection.Emit.InternalAssemblyBuilder.GetExportedTypes() +68
Castle.Core.Internal.ReflectionUtil.GetAvailableTypes(Assembly assembly, Boolean includeNonExported) +74
Castle.MicroKernel.Registration.FromAssemblyDescriptor.<SelectedTypes>b__0(Assembly a) +21
System.Linq.<SelectManyIterator>d__14`2.MoveNext() +267
Castle.MicroKernel.Registration.FromDescriptor.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) +296
Castle.MicroKernel.DefaultKernel.Register(IRegistration[] registrations) +72
Castle.Windsor.WindsorContainer.Register(IRegistration[] registrations) +50
Невозможно ли что-либо зарегистрировать в динамической сборке или есть какая-то другая проблема, которую мне не хватает?
Обратите внимание, что без Windsor (т.е. с использованием службы активатора контроллера по умолчанию) сборка/контроллеры/конечные точки работают правильно. Я могу использовать функциональность DynamicProxy от Windsor вместо подхода Reflection.Emit, но я хотел бы исчерпать все возможности с помощью этого текущего подхода, прежде чем я займусь этой непростой задачей!