Hi, I redid the implementation to use proxyGenerationOptions's Selector
the patch with new version is in donjon: http://support.castleproject.org/projects/DYNPROXY/issues/view/DYNPROXY-ISSUE-37 Here's Reflector's C# view of sample method from one of tests. public override int <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32> *Do <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/Do%28%29:Int32>*() { if (this.tokenCache1_interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1_interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d> == null) { this.tokenCache1_interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1_interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d> = proxyGenerationOptions <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/proxyGenerationOptions:Castle.DynamicProxy.ProxyGenerationOptions>.Selector <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Castle.DynamicProxy:2.0.3.0:407dd0808d44fbdc/Castle.DynamicProxy.ProxyGenerationOptions/property:Selector:Castle.DynamicProxy.IInterceptorSelector>.SelectInterceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Castle.DynamicProxy:2.0.3.0:407dd0808d44fbdc/Castle.DynamicProxy.IInterceptorSelector/SelectInterceptors%28System.Type,System.Reflection.MethodInfo,Castle.Core.Interceptor.IInterceptor%5b%5d%29:Castle.Core.Interceptor.IInterceptor%5b%5d>(typeTokenCache <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/typeTokenCache:System.Type>, tokenCache1 <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1:System.Reflection.MethodInfo>, this.__interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/__interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d>); } if (this.tokenCache1_interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1_interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d> == null) { this.tokenCache1_interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1_interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d> = new IInterceptor <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Castle.Core:1.0.3.0:407dd0808d44fbdc/Castle.Core.Interceptor.IInterceptor>[0]; } if (this.tokenCache1_interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1_interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d>.Length <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Array/property:Length:Int32> == 0) { return base.Do <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Castle.DynamicProxy.Tests:1.1.0.0:407dd0808d44fbdc/Castle.DynamicProxy.Tests.InterceptorSelector.SimpleClass/Do%28%29:Int32>(); } object <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object>[] *objArray* = new object <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object>[0]; InvocationDo_1 <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7.InvocationDo_1> *o_* = new InvocationDo_1 <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7.InvocationDo_1/.ctor%28SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7,Castle.Core.Interceptor.IInterceptor%5b%5d,System.Type,System.Reflection.MethodInfo,Object%5b%5d,Object%29>(this, this.tokenCache1_interceptors <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1_interceptors:Castle.Core.Interceptor.IInterceptor%5b%5d>, typeTokenCache <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/typeTokenCache:System.Type>, tokenCache1 <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://DynamicProxyGenAssembly2::a621a9e7e5c32e69/SimpleClassProxy063fd4cf3b3b4b25ac6f78d1abc0e5f7/tokenCache1:System.Reflection.MethodInfo>, objArray, this); o_.Proceed <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Castle.DynamicProxy:2.0.3.0:407dd0808d44fbdc/Castle.DynamicProxy.AbstractInvocation/Proceed%28%29>(); return (int <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Int32>) o_.ReturnValue <http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Castle.DynamicProxy:2.0.3.0:407dd0808d44fbdc/Castle.DynamicProxy.AbstractInvocation/property:ReturnValue:Object>; } Cheers, Krzysztof Fabian Schmied pisze: >> You can't do that. >> Simple reason is, that you don't get access to interceptors while generating >> proxy type, ergo you can't call selector on them, ergo it has to be done at >> runtime. >> > > Hm, that's true. Let's see what Hammett says. > > Fabian > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Development List" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/castle-project-devel?hl=en -~----------~----~----~----~------~----~------~--~---
