private IConstraint AddInterfaceConstraint(IReflectClass claxx) { Collection4 classes = Stream().ClassCollection().ForInterface(claxx); if (classes.Size() == 0) { QConClass qcc = new QConClass(_trans, null, null, claxx); AddConstraint(qcc); return(qcc); } IEnumerator i = classes.GetEnumerator(); IConstraint constr = null; while (i.MoveNext()) { ClassMetadata classMetadata = (ClassMetadata)i.Current; IReflectClass classMetadataClaxx = classMetadata.ClassReflector(); if (classMetadataClaxx != null) { if (!classMetadataClaxx.IsInterface()) { if (constr == null) { constr = Constrain(classMetadataClaxx); } else { constr = constr.Or(Constrain(classMetadata.ClassReflector())); } } } } return(constr); }
public static ClassMetadata ErasedFieldType(ObjectContainerBase container, IReflectClass fieldType) { return(fieldType.IsInterface() ? container.ClassMetadataForID(UntypedId) : container .ProduceClassMetadata(BaseType(fieldType))); }
public virtual bool IsInterface() { if (_delegate != null) { return(_delegate.IsInterface()); } return(false); }
private IConstraint AddClassConstraint(IReflectClass claxx) { if (IsTheObjectClass(claxx)) { return(null); } if (claxx.IsInterface()) { return(AddInterfaceConstraint(claxx)); } Collection4 newConstraints = IntroduceClassConstrain(claxx); if (newConstraints.IsEmpty()) { QConClass qcc = new QConClass(_trans, claxx); AddConstraint(qcc); return(qcc); } return(ToConstraint(newConstraints)); }
public Collection4 ForInterface(IReflectClass claxx) { Collection4 col = new Collection4(); ClassMetadataIterator i = Iterator(); while (i.MoveNext()) { ClassMetadata clazz = i.CurrentClass(); IReflectClass candidate = clazz.ClassReflector(); if (!candidate.IsInterface()) { if (claxx.IsAssignableFrom(candidate)) { col.Add(clazz); IEnumerator j = new Collection4(col).GetEnumerator(); while (j.MoveNext()) { ClassMetadata existing = (ClassMetadata)j.Current; if (existing != clazz) { ClassMetadata higher = clazz.GetHigherHierarchy(existing); if (higher != null) { if (higher == clazz) { col.Remove(existing); } else { col.Remove(clazz); } } } } } } } return(col); }
public static ClassMetadata ErasedFieldType(ObjectContainerBase container, IReflectClass fieldType) { return fieldType.IsInterface() ? container.ClassMetadataForID(UntypedId) : container .ProduceClassMetadata(BaseType(fieldType)); }
private IConstraint AddClassConstraint(IReflectClass claxx) { if (IsTheObjectClass(claxx)) { return null; } if (claxx.IsInterface()) { return AddInterfaceConstraint(claxx); } var newConstraints = IntroduceClassConstrain(claxx); if (newConstraints.IsEmpty()) { var qcc = new QConClass(_trans, claxx); AddConstraint(qcc); return qcc; } return ToConstraint(newConstraints); }