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