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);
     }
 }