Is it invocation.Proxy? It's pretty annoying that the API is not documented.
2010/8/10 Ken Egozi <[email protected]> > you've got (at least) two options at your disposal: > a. the invocation object has a reference to the object it was running on (I > don't remember the name of the reference by heart). you can then grab the > dictionary from there using reflection > a'. better yet, have the dictionary be an explicitly implemented interface, > and get typed access for it in the interceptor, without polluting your > entity's API > b. you could also keep the dictionary on the interceptor instance (and make > sure you have interceptor per entity and not as singleton) which will make > accessing it a breeze. > example for something similar can be seen here: > http://daniel.wertheim.se/2010/02/05/getting-started-with-mongodb-using-json-net-and-castle-dynamic-proxy/ > > <http://daniel.wertheim.se/2010/02/05/getting-started-with-mongodb-using-json-net-and-castle-dynamic-proxy/> > > On Tue, Aug 10, 2010 at 12:20 PM, omer katz <[email protected]> wrote: > >> So I've gotten this far: >> >>> internal >>> class LookupPropertyInterceptor : IInterceptor >>> >>> { >>> >>> public void Intercept(IInvocation invocation) >>> >>> { >>> >>> if (invocation.Method.Name.StartsWith("set_", >>> StringComparison.OrdinalIgnoreCase) >>> && >>> >>> invocation.Method.GetCustomAttributes( >>> typeof(LookupProperty), true).ToList().Count == 1) >>> >>> { >>> >>> var property = ((LookupProperty) >>> invocation.Method.GetCustomAttributes(typeof(LookupProperty), true >>> ).ToList()[0]); // Handle property here >>> >>> } >>> >>> if (invocation.Method.Name.StartsWith("get_", >>> StringComparison.OrdinalIgnoreCase) >>> && >>> >>> invocation.Method.GetCustomAttributes( >>> >>> typeof(LookupProperty), true).ToList().Count == 1) >>> >>> { >>> >>> var >>> >> property = ((LookupProperty) invocation.Method.GetCustomAttributes(typeof >> (LookupProperty), true).ToList()[0]); // Handle property here >> >> } >> >> invocation.Proceed(); >> >> } >> >> } >> >> Now how do I handle the setting and getting to the dict dictionary from >> the source object? >> >> 2010/8/10 Ken Egozi <[email protected]> >> >>> while intercepting you have access to the intercepted MethodInfo. from >>> there to the attributes set on that method the road is clear >>> >>> On Tue, Aug 10, 2010 at 11:26 AM, omer katz <[email protected]> wrote: >>> >>>> Hello, >>>> I am reading Krzysztof Koźmic's tutorial about Dynamic Proxy and I can't >>>> figure out how to intercept all properties that have some custom attribute. >>>> >>>> Example: >>>> >>>>> [ >>>>> Entity("MyEntityName")] >>>>> >>>>> public class MyEntity >>>>> >>>>> { >>>>> >>>>> private Dictionary<string, object> dict = new Dictionary<string, >>>>> object>(); >>>>> >>>>> [ >>>>> LookupProperty("SomeOtherEntityName")] >>>>> >>>>> public virtual SomeOtherEntity SomeOtherEntity { get; set; } >>>>> >>>>> } >>>>> >>>> In the end result I would like SomeOtherEntity to access the dict >>>> dictionary with "SomeOtherEntityName" as the key. >>>> >>>> Is it possible? How can it be done? >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Castle Project Users" group. >>>> To post to this group, send email to >>>> [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]<castle-project-users%[email protected]> >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/castle-project-users?hl=en. >>>> >>> >>> >>> >>> -- >>> Ken Egozi. >>> http://www.kenegozi.com/blog >>> http://www.delver.com >>> http://www.musicglue.com >>> http://www.castleproject.org >>> http://www.idcc.co.il - הכנס הקהילתי הראשון למפתחי דוטנט - בואו בהמוניכם >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Castle Project Users" group. >>> To post to this group, send email to >>> [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]<castle-project-users%[email protected]> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/castle-project-users?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Castle Project Users" group. >> To post to this group, send email to >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<castle-project-users%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/castle-project-users?hl=en. >> > > > > -- > Ken Egozi. > http://www.kenegozi.com/blog > http://www.delver.com > http://www.musicglue.com > http://www.castleproject.org > http://www.idcc.co.il - הכנס הקהילתי הראשון למפתחי דוטנט - בואו בהמוניכם > -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]<castle-project-users%[email protected]> . For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Castle Project Users" 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-users?hl=en.
