plus you get xml docs on the interface if it wasnt obvious enough
/// <summary>
/// Encapsulates an invocation of a proxied method.
/// </summary>
public interface IInvocation
{
/// <summary>
/// Gets the proxy object on which the intercepted method is
invoked.
/// </summary>
/// <value>Proxy object on which the intercepted method is
invoked.</value>
object Proxy { get; }
...
On 10/08/2010 9:12 PM, omer katz wrote:
Is it invocation.Proxy?
It's pretty annoying that the API is not documented.
2010/8/10 Ken Egozi <[email protected] <mailto:[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/
On Tue, Aug 10, 2010 at 12:20 PM, omer katz <[email protected]
<mailto:[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] <mailto:[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] <mailto:[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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto: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.delver.com/>
http://www.musicglue.com <http://www.musicglue.com/>
http://www.castleproject.org <http://www.castleproject.org/>
http://www.idcc.co.il <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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto: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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto: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.delver.com/>
http://www.musicglue.com <http://www.musicglue.com/>
http://www.castleproject.org <http://www.castleproject.org/>
http://www.idcc.co.il <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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto: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.
--
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.