public TypeArray GetIfacesAll()
{
if (_ifacesAll == null)
{
_ifacesAll = getAggregate().GetTypeManager().SubstTypeArray(getAggregate().GetIfacesAll(), GetTypeArgsAll());
}
return _ifacesAll;
}
private bool HasAnyBaseInterfaceConversion(CType pDerived, CType pBase) { if (!pBase.isInterfaceType()) { return(false); } if (!pDerived.IsAggregateType()) { return(false); } AggregateType atsDer = pDerived.AsAggregateType(); while (atsDer != null) { TypeArray ifacesAll = atsDer.GetIfacesAll(); for (int i = 0; i < ifacesAll.Count; i++) { if (HasInterfaceConversion(ifacesAll[i].AsAggregateType(), pBase.AsAggregateType())) { return(true); } } atsDer = atsDer.GetBaseClass(); } return(false); }