我有一個使用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方法,但是我想在解決這個有點令人頭疼的任務之前用這種當前的方法排除所有可能性!