Exemplo n.º 1
0
        public static IEnumerable <Type> GetHierarchy(Type input, TypeHierarchyOrder typeHierarchyOrder = TypeHierarchyOrder.BottomUp)
        {
            // Traverse up the inheritence hierarchy but return
            // in top-down order

            if (input == null)
            {
                return(Enumerable.Empty <Type>());
            }

            var types = new QueueOrStack <Type>(typeHierarchyOrder);

            AddTypeAndInterfaces(types, input);

            Type baseType = input;

            while ((baseType = baseType.BaseType) != null)
            {
                AddTypeAndInterfaces(types, baseType);
            }

            return(types.Distinct().ToList());
        }
Exemplo n.º 2
0
 public QueueOrStack(TypeHierarchyOrder typeHierarchyOrder)
 {
     _typeHierarchyOrder = typeHierarchyOrder;
 }