public static HashSet <ResourceType> GetFamily(this ResourceType resourceType) { ResourceType topmostAncestor = ResourceTypeExtensions.GetTopmostAncestor(resourceType); HashSet <ResourceType> resourceTypes = new HashSet <ResourceType>(); ResourceTypeExtensions.GetDescendants(topmostAncestor, resourceTypes); return(resourceTypes); }
private static void GetDescendants(ResourceType resourceType, HashSet <ResourceType> familyResources) { familyResources.Add(resourceType); foreach (ResourceType derivedType in resourceType.GetDerivedTypes()) { Func <ResourceType, bool> func = null; HashSet <ResourceType> resourceTypes = familyResources; if (func == null) { func = (ResourceType item) => item.FullName == derivedType.FullName; } if (resourceTypes.Any <ResourceType>(func)) { continue; } ResourceTypeExtensions.GetDescendants(derivedType, familyResources); } }