public override object DeepCopy(object component, ISessionFactoryImplementor factory) { if (component == null) { return(null); } object[] values = GetPropertyValues(component); for (int i = 0; i < propertySpan; i++) { values[i] = propertyTypes[i].DeepCopy(values[i], factory); } object result = Instantiate(); SetPropertyValues(result, values); //not absolutely necessary, but helps for some //equals()/hashCode() implementations if (ComponentTuplizer.HasParentProperty) { ComponentTuplizer.SetParent(result, ComponentTuplizer.GetParent(component), factory); } return(result); }
public virtual object Instantiate(object parent, ISessionImplementor session) { object result = Instantiate(); if (ComponentTuplizer.HasParentProperty && parent != null) { ComponentTuplizer.SetParent(result, session.PersistenceContext.ProxyFor(parent), session.Factory); } return(result); }
/// <summary> This method does not populate the component parent</summary> public object Instantiate() { return(ComponentTuplizer.Instantiate()); }
public virtual void SetPropertyValues(object component, object[] values) { ComponentTuplizer.SetPropertyValues(component, values); }
public object[] GetPropertyValues(object component) { return(ComponentTuplizer.GetPropertyValues(component)); }
public object GetPropertyValue(object component, int i) { return(ComponentTuplizer.GetPropertyValue(component, i)); }