using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace COA.EnterpriseServices.DataAccess { public static class DataAccessManager { private static readonly IDictionary activeDataAccess = new Dictionary { #region Creditor ["COA.EnterpriseServices.DataAccess.Entities.Creditor"] = new[] { "COA.EnterpriseServices.DataAccess.QuickBase.QuickBaseDataAccess", "COA.EnterpriseServices.DataAccess.EntityFramework.EntityDataAccess" }, #endregion #region Client ["COA.EnterpriseServices.DataAccess.Entities.Client"] = new[] { "COA.EnterpriseServices.DataAccess.QuickBase.QuickBaseDataAccess", "COA.EnterpriseServices.DataAccess.EntityFramework.EntityDataAccess" } #endregion }; public static ICollection> GetDataAccess() where T : class, IRecord { var type = typeof(T); return Dependencies.Container .GetAllInstances>() .Where(i => { var dataAccessType = i.GetType().FullName; return activeDataAccess.ContainsKey(type.FullName) && activeDataAccess[type.FullName].Any(a => dataAccessType.StartsWith(a)); }) .OrderBy(i => i.GetType().Name.StartsWith("QuickBase", StringComparison.OrdinalIgnoreCase)) .ToList(); } } }