Пример #1
0
        public static IConnection CreateConnection(AvailableConnection availableConnection,
                                                   ConnectionSettings connectionSettings)
        {
            Type connectionType = Assembly.GetExecutingAssembly().GetTypes().SingleOrDefault(connection => string.Equals(connection.Name,
                                                                                                                         availableConnection.ToString(), StringComparison.InvariantCultureIgnoreCase));

            if (connectionType == null)
            {
                Log.Error("Connection: {@ConnectionType} doesn't exist in implementation list array", availableConnection.ToString());
                throw new NotImplementedException($"Connection: {availableConnection.ToString()} doesn't exist in implementation list array");
            }
            return((IConnection)Activator.CreateInstance(connectionType, connectionSettings));
        }
Пример #2
0
        public static TApi CreateApi <TApi>(AvailableConnection availableConnectionType, ConnectionSettings connectionSettings, Syntax syntax, bool autoConnect = true) where TApi : IApi
        {
            //Create Connection settings
            Type apiType = Assembly.GetAssembly(typeof(TApi)).GetTypes()?.SingleOrDefault(type =>
                                                                                          string.Equals(typeof(TApi).Name, type.Name,
                                                                                                        StringComparison.InvariantCultureIgnoreCase));

            var connectionType = Assembly.GetAssembly(typeof(IConnection)).GetTypes().SingleOrDefault(type => string.Equals(availableConnectionType.ToString(), type.Name,
                                                                                                                            StringComparison.InvariantCultureIgnoreCase));

            Type connectionSettingsType = connectionType?.GetConstructors()?.FirstOrDefault()?.GetParameters()
                                          ?.SingleOrDefault(param => param.Name.Contains("Settings"))?.ParameterType;

            var connectionSettingsInstance = (ConnectionSettings)Activator.CreateInstance(connectionSettingsType, connectionSettings.EndPoint);

            IConnection connection = (IConnection)Activator.CreateInstance(connectionType, connectionSettings);

            if (autoConnect)
            {
                connection.OpenConnection();
            }
            return((TApi)Activator.CreateInstance(apiType, connection, syntax));
        }
Пример #3
0
        public static IApi CreateApi(AvailableApi availableApi, AvailableConnection availableConnectionType, AvailableSyntax availableSyntax, ConnectionSettings connectionSettings,
                                     bool autoConnect = true)
        {
            Type apiType = Assembly.GetExecutingAssembly().GetTypes()?.SingleOrDefault(type =>
                                                                                       string.Equals(availableApi.ToString(), type.Name,
                                                                                                     StringComparison.InvariantCultureIgnoreCase));

            Type syntaxType = Assembly.GetExecutingAssembly().GetTypes()?.SingleOrDefault(type =>
                                                                                          string.Equals(availableSyntax.ToString(), type.Name,
                                                                                                        StringComparison.InvariantCultureIgnoreCase));

            Type connectionType = Assembly.GetAssembly(typeof(IConnection)).GetTypes().SingleOrDefault(type =>
                                                                                                       string.Equals(availableConnectionType.ToString(), type.Name,
                                                                                                                     StringComparison.InvariantCultureIgnoreCase));

            IConnection connection = (IConnection)Activator.CreateInstance(connectionType, connectionSettings);
            Syntax      syntax     = (Syntax)Activator.CreateInstance(syntaxType);

            if (autoConnect)
            {
                connection.OpenConnection();
            }
            return((IApi)Activator.CreateInstance(apiType, connection, syntax));
        }