public static bool HasDerived(this OdcmObject odcmObject) { if (odcmObject.AsOdcmClass() != null) { return(odcmObject.AsOdcmClass().Derived.Any()); } else if (odcmObject.AsOdcmProperty() != null && odcmObject.AsOdcmProperty().Projection.Type.AsOdcmClass() != null) { return(odcmObject.AsOdcmProperty().Projection.Type.AsOdcmClass().Derived.Any()); } else if (odcmObject.AsOdcmMethod() != null && odcmObject.AsOdcmMethod().ReturnType.AsOdcmClass() != null) { return(odcmObject.AsOdcmMethod().ReturnType.AsOdcmClass().Derived.Any()); } return(false); }
public static OdcmClass BaseClass(this OdcmObject odcmObject) { if (odcmObject.AsOdcmProperty() != null && odcmObject.AsOdcmProperty().Projection.Type.AsOdcmClass() != null) { var baseClass = odcmObject.AsOdcmProperty().Projection.Type.AsOdcmClass().Base; if (baseClass != null && !baseClass.IsAbstract) { return(baseClass); } } else if (odcmObject.AsOdcmClass() != null && odcmObject.AsOdcmClass().Base != null) { if (!odcmObject.AsOdcmClass().Base.IsAbstract) { return(odcmObject.AsOdcmClass().Base); } } return(null); }