예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 /// <summary> This method does not populate the component parent</summary>
 public object Instantiate()
 {
     return(ComponentTuplizer.Instantiate());
 }
예제 #4
0
 public virtual void SetPropertyValues(object component, object[] values)
 {
     ComponentTuplizer.SetPropertyValues(component, values);
 }
예제 #5
0
 public object[] GetPropertyValues(object component)
 {
     return(ComponentTuplizer.GetPropertyValues(component));
 }
예제 #6
0
 public object GetPropertyValue(object component, int i)
 {
     return(ComponentTuplizer.GetPropertyValue(component, i));
 }