I think you should have a WARNING in the log.
2010/3/22 Stefan Steinegger <[email protected]>
> Just found this very confusing situation. I have a private setter and
> an internal method which modifies it. The proxy cannot interfere,
> that's logical. But there is no error message, like when virtual is
> missing. The effect is that at runtime, the modification on the
> property is just lost.
>
> public class LazyLoadingTest
> {
> // ids and stuff
> // ...
>
> private string privateSetter;
> public virtual string PrivateSetter
> {
> get { return privateSetter; }
> private set { privateSetter = value; }
> }
> internal protected virtual void
> InternallySetPrivateSetter(string
> value)
> {
> PrivateSetter = value;
> }
>
> }
>
> [TestMethod]
> public void Test()
> {
> // the object has been stored in TestInitialize
>
> var obj = session.Load<LazyLoadingTest>(id);
>
> Assert.AreEqual("A", obj.PrivateSetter);
>
> obj.InternallySetPrivateSetter("B");
> Assert.AreEqual("B", obj.PrivateSetter, "Changing the
> property value
> fails");
> }
>
> The last line of the test fails. This applies not only to private
> setters, also to internal and protected. Interestingly, the field
> behind the property holds the new value "B" after it is set. Then it
> is reverted to "A" when PrivateSetter is called the second time
> without passing the private setter.
>
> I understand that this can't work (except of the protected setter,
> which actually should). But it produces very subtle problems which are
> hard to find. Should internal methods be prohibited when loading the
> session factory?
>
> --
> 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.