Can someone please help me understand the following:
In the previous version of NHibernate (2.0.1) the following property will validate and is compatible with the Castle Proxies:
internal virtual BusinessObject Parent
{
get { /*code*/ }
}
However, in 2.1 it errors saying that the types should be 'public/protected virtual' or 'protected internal virtual'. I have issues with this because marking a property with 'protected internal' exposes the property to inherited types in OTHER assemblies (effectively protected OR internal). Given that this was never a requirement before, it feels like a bit of a bad requirement to impose now.
Can someone please explain why this requirement is now there and what it is trying to enforce so I can at least understand what it is intending to achieve.
If this restriction is not entirely needed, and I am 100% certain these types of properties will NEVER map to DB properties I am intending to create my own Mashup ByteCode provider using the Castle proxy factory and the Type Validator from 2.0.1. However, I'm definitely open to any advice.