public void TypeLevelArrayField()
        {
            var level = new TypeRelevantDeepSearcher(new Type[] { typeof(TestSortArray1), typeof(TestSortArray2) });


            Assert.AreEqual(1, level.Search(typeof(TestSortArray1)));
            Assert.AreEqual(0, level.Search(typeof(TestSortArray2)));
        }
        public void TypeLevel1()
        {
            var level = new TypeRelevantDeepSearcher(new Type[] { typeof(TestSortConfig1), typeof(TestSortConfig2), typeof(TestSortConfig3) });


            Assert.AreEqual(0, level.Search(typeof(TestSortConfig1)));
            Assert.AreEqual(1, level.Search(typeof(TestSortConfig2)));
            Assert.AreEqual(2, level.Search(typeof(TestSortConfig3)));
        }
            public RelationSorter(IEnumerable <Type> table_queryables)
            {
                var tables    = table_queryables.Select(q => new RelationSorterTable(q)).ToList();
                var typeLevel = new TypeRelevantDeepSearcher(tables.Select(t => t.Type));

                foreach (var table in tables)
                {
                    table.Priority = typeLevel.Search(table.Type);
                }

                tables.Sort(_Compare);
                Types = tables.Select(t => t.Type).ToArray();
            }