// We could have used the default implementation of this on Type // if it handled special cases like generic type constraints // and interfaces->objec. public override bool IsSubclassOf(Type c) { ProjectingType?otherType = c as ProjectingType; if (otherType == null || Projector != otherType.Projector) { return(false); } return(UnderlyingType.IsSubclassOf(otherType.UnderlyingType)); }