private void CreateTypesListSpeedTest() { using (FileLog _logger = typeof(FileLog).CreateInstance <FileLog>(new object[] { "ORMSchemaTest", new FileLogSettings() { DateFolderMask = "yyyy-MM-dd" } })) { _logger.Debug("List implements IDataReader"); ImplementsList.Add(typeof(IDataReader)); foreach (var s in ImplementsList.GetTypes(typeof(IDataReader))) { _logger.Debug(s.FullName); } _logger.Debug("Start speed test for find implements IDataReader"); for (int i = 0; i < 1000000; i++) { var l = ImplementsList.GetTypes(typeof(IDataReader)).ToArray(); } //ImplementsList.Add(typeof(IDataReader)); //foreach (var s in ImplementsList.GetTypes(typeof(IDataReader))) // _logger.Debug(s.FullName); //_logger.Debug("Start speed test for find implements IDataReader"); //for (int i = 0; i < 1000000; i++) //{ // var l = ImplementsList.GetTypes(typeof(IDataReader)).ToArray(); //} _logger.Debug("Finish speed test"); } }
private static IAppEvaluator CreateEvaluator(ActionInfo ai, DataPackage inParamStor) { var inParams = ai.InterfaceParameters.Where(kvp => kvp.Value.Dirrect == ParamDirrect.Input && kvp.Value.Required).Select(kvp => kvp.Value); int pCount = inParams.Count(); if (inParamStor != null) { inParamStor.GoDataTop(); } if (pCount > 0 && (inParamStor == null || inParamStor.FieldCount < pCount || !inParamStor.Read())) { throw new InvalidOperationException( Strings.S031_MetaStack_Core_Actions_CreateEvaluator_2 .ToFormat(ai.ActionID, ai.InterfaceID)); } else if (pCount > 0) { foreach (ParamInfo pi in inParams) { try { var val = inParamStor[pi.ParameterID]; } catch { throw new InvalidOperationException( Strings.S031_MetaStack_Core_Actions_CreateEvaluator_1 .ToFormat(ai.InterfaceID, pi.ParameterID, ai.ActionID)); } } inParamStor.GoDataTop(); } if (!_loadedTypesCache.TryGetValue(ai.ClassName, out Type type)) { var a = LoadAssembly(ai.AssemblyID); ImplementsList.Add(typeof(IAppEvaluator), a); type = ImplementsList.GetTypes(typeof(IAppEvaluator)) .FirstOrDefault(t => t.FullName.Equals(ai.ClassName, StringComparison.Ordinal)); _loadedTypesCache.TryAdd(ai.ClassName, type); } return(type.CreateInstance <IAppEvaluator>()); }
private static ISchemaDBSync GetSyncronizer(string dbProviderName) { var l = ImplementsList.GetTypes(typeof(ISchemaDBSync)); if (l == null) { throw new InvalidOperationException("No class inherited from ISchemaDBSync defined"); } foreach (var t in l) { SchemaDBSyncAttribute att = (System.Attribute.GetCustomAttributes(t)? .FirstOrDefault(attr => attr.GetType() == typeof(SchemaDBSyncAttribute) && (attr as SchemaDBSyncAttribute)?.DBProviderName == dbProviderName) as SchemaDBSyncAttribute); if (att != null) { return((ISchemaDBSync)t.CreateInstance()); } } throw new InvalidOperationException("No class inherited from ISchemaDBSync contained attribute of type SchemaDBSyncAttribute defined"); }
private static JMXFactory CreateFactoryFromMdbContext(IServiceProvider services, MdbContext mdb) { var l = ImplementsList.GetTypes(typeof(JMXFactory)); if (l == null) { //No class inherited from JMXFactory defined throw new InvalidOperationException(Strings.S031_MetaStack_Core_ORM_JMXFactory_Create_1); } string dbProviderName = mdb.ProviderName; JMXFactory factory = null; foreach (var t in l) { if (System.Attribute.GetCustomAttributes(t)? .FirstOrDefault(attr => attr.GetType() == typeof(DBRefAttribute) && (attr as DBRefAttribute) .DBProviderName .Equals(dbProviderName, StringComparison.OrdinalIgnoreCase)) is DBRefAttribute att) { factory = (JMXFactory)t.CreateInstance(mdb); break; } } if (factory == null) { //No class inherited from JMXFactory contained attribute of type DBRefAttribute defined throw new InvalidOperationException(Properties.Strings.S031_MetaStack_Core_ORM_JMXFactory_Create_2); } factory._services = services; factory._mdb = mdb; factory._logger = services .GetRequiredService <ILoggerProvider>() .CreateLogger(typeof(JMXFactory).FullName); return(factory); }
public static T GetProvider <T>(params object[] ctorArgs) where T : class, IJMXSchemaProvider { return(ImplementsList.GetTypes(typeof(IJMXSchemaProvider))? .FirstOrDefault(t => t.Equals(typeof(T)))?.CreateInstance <T>(ctorArgs)); }
public IEnumerable <IDataCache <TKey, TValue> > GetCache <TKey, TValue>() => ImplementsList.GetTypes(typeof(IDataCache <TKey, TValue>)) .Select(t => t.CreateInstance <IDataCache <TKey, TValue> >());