我有一个使用Reflection.Emit创建的动态生成的程序集。然后我试图从以下列方式使用温莎该程序集注册的控制器类型:可以从动态程序集中Castle 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(即使用默认的控制器激活器服务),程序集/控制器/端点工作正常。我可以使用Windsor的DynamicProxy功能而不是Reflection.Emit方法,但是我想在解决这个有点令人头疼的任务之前用这种当前的方法排除所有可能性!