internal void completeProperty(Serializable incompleteObject, string propertyName, object propertyValue, bool ignoreLazyProperty) { if (incompleteObject.getFetchType(propertyName) == FetchType.EAGER || !ignoreLazyProperty) { if (incompleteObject.isOneToManyProperty(propertyName)) { completeOneToManyProperty(incompleteObject, propertyName); } if (typeof(Serializable).IsAssignableFrom(incompleteObject.getPropertyType(propertyName)) && propertyValue != null) { Serializable serializableProperty = (Serializable)propertyValue; Type propertyType = serializableProperty.GetType(); object propertyId = serializableProperty.getPkValue(); serializableProperty = (Serializable)selectById(propertyId, propertyType); incompleteObject.GetType().GetProperty(propertyName).SetValue(incompleteObject, serializableProperty); } } }