NH Version: 2.1.2.4000 and 2.1.0.4000 - Tested with both

proxy-validator = true;

protected virtual void IncrementAmount - Don't work - Tested with
reflection (That's why I want to use protected internal)
protected internal virtual void IncrementAmount - Don't work

On 29 jan, 16:43, Fabio Maulo <[email protected]> wrote:
> version of NH ?
> and put this
> protected virtual void IncrementAmount
>
> The method should be virtual to be intercepted and the proxy-validator
> should be on
>
> 2010/1/29 CassioT <[email protected]>
>
>
>
>
>
> > Hi Fabio. I haven't seen anything in logs that could help me.
>
> > I uploaded a tiny project to
> >http://rapidshare.com/files/343029697/SimpleNH.zip.html
> > where you can see what is happening.
>
> > I didn't send the libraries because I think you already have it. lol
>
> > Thanks
>
> > On 29 jan, 11:11, Fabio Maulo <[email protected]> wrote:
> > > sorry I mean
> > > protected virtual void IncrementAmount(
>
> > > 2010/1/29 Fabio Maulo <[email protected]>
>
> > > > version of NH ?
> > > > btw try to activate the WARN log-level and read the log file.
>
> > > > protected void IncrementAmount(
>
> > > > 2010/1/29 CassioT <[email protected]>
>
> > > > But protected internal should work. Do you agree? Or does it work and
> > > >> I am doing something wrong?
>
> > > >> On 29 jan, 06:50, "Richard Brown \(gmail\)" <[email protected]>
> > > >> wrote:
> > > >> > If a method/property is marked as protected, than the NH proxy
> > should be
> > > >> > able to intercept access.  If there's any access to non-protected
> > > >> > private/internal members from outside the class, then the proxy is
> > > >> powerless
> > > >> > to intercept.
>
> >http://broloco.blogspot.com/2008/01/nhibernate-identity-map-and-proxi.
> > > >> ..
>
> > > >> > --------------------------------------------------
> > > >> > From: "CassioT" <[email protected]>
> > > >> > Sent: Thursday, January 28, 2010 5:34 PM
> > > >> > To: "nhusers" <[email protected]>
> > > >> > Subject: [nhusers] Re: Proxy and property modification
>
> > > >> > > Hi Richard,
>
> > > >> > > Now I think I found the problem. I have a function IncrementAmount
> > > >> > > (decimal value). This function was protected internal and changing
> > it
> > > >> > > to public it will work, even if the property Amount is private
> > set.
>
> > > >> > > So I think that the problem has relation to the Internal
> > restriction.
> > > >> > > I don't know why since the function is marked as protected
> > internal
> > > >> > > and not only as internal. To give you a clear look I'll write a
> > > >> > > similar code here:
>
> > > >> > > public class Foo
> > > >> > > {
> > > >> > >    public virtual decimal Amount { get; private set; }
>
> > > >> > >    protected internal void IncrementAmount(decimal value)
> > > >> > >    {
> > > >> > >        this.Amount += value;
> > > >> > >    }
> > > >> > > }
>
> > > >> > > public class Bar
> > > >> > > {
> > > >> > >    public Foo Foo = new Foo();
> > > >> > > }
>
> > > >> > > Bar mapping:
> > > >> > > <many-to-one name="Foo" column="Foo_Id" class="Foo"
> >  not-null="true" /
>
> > > >> > > var bar = s.Get<Bar>(10);
> > > >> > > bar.Foo.IncrementAmount(1);
>
> > > >> > > TESTS RESULTS FOR THE ABOVE CODE:
>
> > > >> > > Modifying the property:
>
> > > >> > > protected internal void IncrementAmount(decimal value);
>
> > > >> > > public virtual decimal Amount { get; private set; } // NOT OK
> > > >> > > public virtual decimal Amount { get; protected set; }  // NOT OK
> > > >> > > public virtual decimal Amount { get; set; }  // OK
>
> > > >> > > Modifying the function:
>
> > > >> > > public void IncrementAmount(decimal value);
>
> > > >> > > public virtual decimal Amount { get; private set; } // OK
> > > >> > > public virtual decimal Amount { get; protected set; }  // OK
> > > >> > > public virtual decimal Amount { get; set; }  // OK
>
> > > >> > > Modifying the mapping:
>
> > > >> > > <many-to-one name="Foo" column="Foo_Id" class="Foo"
> >  not-null="true"
> > > >> > > fetch="join" /> // ALWAYS OK - Even with internal
>
> > > >> > > So yes, I think this behavior has relation with the internal
> > > >> > > restriction. What do you think?
>
> > > >> > > Thanks
>
> > > >> > > On 28 jan, 06:48, "Richard Brown \(gmail\)" <
> > [email protected]>
> > > >> > > wrote:
> > > >> > >> I think we need to see the code that modifies the Amount
> > property.
>
> > > >> > >> If the property is protected, it has to be inside a method of the
> > > >> class
> > > >> > >> (or
> > > >> > >> one of its subclasses).
>
> > > >> > >> --------------------------------------------------
> > > >> > >> From: "CassioT" <[email protected]>
> > > >> > >> Sent: Thursday, January 28, 2010 5:04 AM
> > > >> > >> To: "nhusers" <[email protected]>
> > > >> > >> Subject: [nhusers] Re: Proxy and property modification
>
> > > >> > >> > Hi Richard,
>
> > > >> > >> > Like I said, take:
>
> > > >> > >> > public virtual decimal Amount { get; protected set; }
>
> > > >> > >> > Anything that I try to put in Amount is denied. If Amount == 0
> > and
> > > >> I
> > > >> > >> > try something like Amount = 5, Amount will not be modified.
>
> > > >> > >> > But like I said before, without the protected restriction or
> > using
> > > >> > >> > fetch="join" (many-to-one association) it works
>
> > > >> > >> > I tested the same code with pure classes (No NHibernate
> > > >> interaction),
> > > >> > >> > just to see if it was a .NET problem, and of course, it worked.
>
> > > >> > >> > Thanks
>
> > > >> > >> > On Jan 27, 8:19 pm, "Richard Brown \(gmail\)"
> > > >> > >> > <[email protected]> wrote:
> > > >> > >> >> Hi,
>
> > > >> > >> >> Can you show the code that modifies the object?  (accesses the
> > > >> > >> >> mutator)
>
> > > >> > >> >> Thanks,
> > > >> > >> >>     Richard
>
> > > >> > >> >> --------------------------------------------------
> > > >> > >> >> From: "CassioT" <[email protected]>
> > > >> > >> >> Sent: Wednesday, January 27, 2010 7:38 PM
> > > >> > >> >> To: "nhusers" <[email protected]>
> > > >> > >> >> Subject: [nhusers] Proxy and property modification
>
> > > >> > >> >> > Hi all.
>
> > > >> > >> >> > I have an entity that has a property that is defined like
> > this:
>
> > > >> > >> >> > public virtual decimal Amount { get; protected set; }
>
> > > >> > >> >> > I don't know why but I can't modify it. The value never
> > change.
>
> > > >> > >> >> > I found two ways to fix it.
>
> > > >> > >> >> > 1) Don't use the proxy version (fetch="join") - Never mind
> > > >> > >> >> > 2) Remove the protected restriction
>
> > > >> > >> >> > Am I doing something wrong or do I have any other
> > alternative?
>
> > > >> > >> >> > I tried to access="field" too.
>
> > > >> > >> >> > Thanks
>
> > > >> > >> >> > --
> > > >> > >> >> > You received this message because you are subscribed to the
> > > >> Google
> > > >> > >> >> > Groups
> > > >> > >> >> > "nhusers" group.
> > > >> > >> >> > To post to this group, send email to
> > [email protected].
> > > >> > >> >> > To unsubscribe from this group, send email to
> > > >> > >> >> > [email protected]<nhusers%[email protected]
> > > >> > >> >> >  >
> > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup 
> > s.com>>
> > > >> .
> > > >> > >> >> > For more options, visit this group at
> > > >> > >> >> >http://groups.google.com/group/nhusers?hl=en.
>
> > > >> > >> > --
> > > >> > >> > You received this message because you are subscribed to the
> > Google
> > > >> > >> > Groups
> > > >> > >> > "nhusers" group.
> > > >> > >> > To post to this group, send email to [email protected].
> > > >> > >> > To unsubscribe from this group, send email to
> > > >> > >> > [email protected]<nhusers%[email protected]
> > > >> > >> >  >
> > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup 
> > s.com>>
> > > >> .
> > > >> > >> > For more options, visit this group at
> > > >> > >> >http://groups.google.com/group/nhusers?hl=en.
>
> > > >> > > --
> > > >> > > You received this message because you are subscribed to the Google
> > > >> Groups
> > > >> > > "nhusers" group.
> > > >> > > To post to this group, send email to [email protected].
> > > >> > > To unsubscribe from this group, send email to
> > > >> > > [email protected]<nhusers%[email protected]
> > > >> > >  >
> > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup 
> > s.com>>
> > > >> .
> > > >> > > For more options, visit this group at
> > > >> > >http://groups.google.com/group/nhusers?hl=en.
>
> > > >> --
> > > >> You received this message because you are subscribed to the Google
> > Groups
> > > >> "nhusers" group.
> > > >> To post to this group, send email to [email protected].
> > > >> To unsubscribe from this group, send email to
> > > >> [email protected]<nhusers%[email protected]
> > > >>  >
> > <nhusers%[email protected]<nhusers%252bunsubscr...@googlegroup 
> > s.com>>
> > > >> .
> > > >> For more options, visit this group at
> > > >>http://groups.google.com/group/nhusers?hl=en.
>
> > > > --
> > > > Fabio Maulo
>
> > > --
> > > Fabio Maulo
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "nhusers" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<nhusers%[email protected] 
> > >
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.
>
> --
> Fabio Maulo

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en.

Reply via email to