private IReflectClass ReflectClassForClass(object example) { if (example is IReflectClass) { return((IReflectClass)example); } if (example is Type) { return(_trans.Reflector().ForClass((Type)example)); } return(null); }
private void AssociateYapClass(Transaction a_trans, object a_object) { if (a_object == null) { } else { //It seems that we need not result the following field //i_object = null; //i_comparator = Null.INSTANCE; //i_classMetadata = null; // FIXME: Setting the YapClass to null will prevent index use // If the field is typed we can guess the right one with the // following line. However this does break some SODA test cases. // Revisit! // if(i_field != null){ // i_classMetadata = i_field.getYapClass(); // } _classMetadata = a_trans.Container().ProduceClassMetadata(a_trans.Reflector().ForObject (a_object)); if (_classMetadata != null) { i_object = _classMetadata.GetComparableObject(a_object); if (a_object != i_object) { i_attributeProvider = _classMetadata.Config().QueryAttributeProvider(); _classMetadata = a_trans.Container().ProduceClassMetadata(a_trans.Reflector().ForObject (i_object)); } if (_classMetadata != null) { _classMetadata.CollectConstraints(a_trans, this, i_object, new _IVisitor4_84(this )); } else { AssociateYapClass(a_trans, null); } } else { AssociateYapClass(a_trans, null); } } }
protected virtual object ReadCreate(Transaction trans, IReadBuffer buffer, ArrayInfo info) { ReadInfo(trans, buffer, info); IReflectClass clazz = NewInstanceReflectClass(trans.Reflector(), info); if (clazz == null) { return null; } return NewInstance(ArrayReflector(Container(trans)), info, clazz); }
private bool ShouldStoreStaticFields(Transaction trans) { return !IsReadOnlyContainer() && (StaticFieldValuesArePersisted() || Platform4.StoreStaticFieldValues (trans.Reflector(), ClassReflector())); }
internal override void Unmarshall(Transaction a_trans) { if (i_trans == null) { base.Unmarshall(a_trans); if (_className != null) { _className = Container().Config().ResolveAliasStoredName(_className); _claxx = a_trans.Reflector().ForName(_className); } } }