static List <IDataProvider> ResolveDataProviders(Type baseType)
        {
            var factories = AssemblyProviderFactories.Where(f => f.Value.SupportsPolymorphism() && f.Key.References(baseType.Assembly)).ToList();

            var result = new List <IDataProvider>();

            foreach (var f in factories)
            {
                result.Add(f.Value.GetProvider(baseType));
            }

            foreach (var type in EntityFinder.FindPossibleTypes(baseType, mustFind: factories.None()))
            {
                result.Add(GetProvider(type));
            }

            return(result);
        }