public IDataContext CreateDC() { if (DcConstructor == null) { var AllAssembly = UtilTools.GetAllAssembly(); List <ConstructorInfo> cis = new List <ConstructorInfo>(); if (AllAssembly != null) { foreach (var ass in AllAssembly) { try { var t = ass.GetExportedTypes().Where(x => typeof(DbContext).IsAssignableFrom(x) && x.Name != "DbContext" && x.Name != "FrameworkContext" && x.Name != "EmptyContext").ToList(); foreach (var st in t) { var ci = st.GetConstructor(new Type[] { typeof(ConnectionStrings) }); if (ci != null) { cis.Add(ci); } } } catch { } } string dcname = DbContext; if (string.IsNullOrEmpty(dcname)) { dcname = "DataContext"; } DcConstructor = cis.Where(x => x.DeclaringType.Name.ToLower() == dcname.ToLower()).FirstOrDefault(); if (DcConstructor == null) { DcConstructor = cis.FirstOrDefault(); } } } return((IDataContext)DcConstructor?.Invoke(new object[] { this })); }