private TCurrentStep CreateCurrentBusinessProcessStep(InstanceCreator instanceCreator, IServiceProvider provider, object previosResult)
        {
            var currentBusinessProcessStep = provider == null
                       ? instanceCreator
                                             .Create <ClassicCreator, TCurrentStep>(new object[] { previosResult })
                       : instanceCreator
                                             .Create <ServiceProviderPropertyCreator, TCurrentStep>(provider, new object[] { previosResult });

            return(currentBusinessProcessStep);
        }
Esempio n. 2
0
 static void AddEffect <T>(Element element) where T : AiRoutingEffectBase
 {
     if (!element.Effects.OfType <T>().Any())
     {
         element.Effects.Add(InstanceCreator <T> .Create());
         EffectShared <T> .SetIsTriggered(element, true);
     }
 }
Esempio n. 3
0
        public static IEnumerable <IIPv6Getter> Create()
        {
            List <IIPv6Getter> getters = new List <IIPv6Getter>();

            getters.AddRange(InstanceCreator.Create <IIPv6Getter>(Ignore.CheckType));
            getters.AddRange(_definedGetters);
            return(getters);
        }
Esempio n. 4
0
        public object Get(Type keyType, params object[] unknownInstances)
        {
            Check.ArgumentIsNull(keyType, nameof(keyType));
            Check.ArgumentIsNull(unknownInstances, nameof(unknownInstances));

            if (unknownInstances.GroupBy(i => i.GetType()).Any(g => g.Count() > 1))
            {
                throw new ArgumentException($"{nameof(unknownInstances)} has more than one entry of the same type.", nameof(unknownInstances));
            }

            var unknownTypes = unknownInstances.ToDictionary(i => i.GetType(), i => i);

            lock (SyncRoot)
            {
                if (!Contains(keyType))
                {
                    throw new ContainerException($"Container does not contain '{keyType}' type as a key.");
                }

                {
                    if (_instances.TryGetValue(keyType, out var instance))
                    {
                        return(instance.Object);
                    }
                }

                {
                    Instance createInstance(ImplementationDefinition implementation)
                    {
                        Check.ArgumentIsNull(implementation, nameof(implementation));

                        switch (implementation)
                        {
                        case ImplementationType implementationType:
                            return(InstanceCreator.Create(this, implementationType.Type, unknownTypes));

                        case ImplementationFactoryMethod implementationFactoryMethod:
                            return(new Instance(implementationFactoryMethod.FactoryMethod(this)));

                        default:
                            throw new InvalidOperationException($"Implementation definition '{implementation.GetType()}' type is not supported.");
                        }
                    }

                    var implementationDefinition = _implementationDefinitions[keyType];
                    var instance = createInstance(implementationDefinition);
                    var obj      = instance.Object;
                    PropertyInjector.Inject(this, instance.Object, unknownTypes);

                    if (implementationDefinition.Lifetime == Lifetime.PerContainer)
                    {
                        _instances.Add(keyType, instance);
                    }

                    return(obj);
                }
            }
        }
Esempio n. 5
0
        protected BaseValueCell(AContext context, Cell cell) : base(context, cell)
        {
            RemoveAccessoryStack();
            _Hint           = BaseTextView.Create <HintView>(ContentView, this, Resource.Id.CellHint);
            _CellValueStack = ValueStack();

            _Value = InstanceCreator.Create <TCell>(this, AndroidContext);
            // _Value = InstanceCreator<BaseCellView, AContext, TCell>.Create(this, AndroidContext);
            _CellValueStack.Add(_Value, Extensions.Layout.Match, Extensions.Layout.Wrap, GravityFlags.Fill | GravityFlags.Center);
        }
Esempio n. 6
0
        protected BaseAiAccessoryCell(AContext context, Cell cell) : base(context, cell)
        {
            RemoveHint();
            RemoveCellValueStack();

            _AccessoryStack = AccessoryStack();
            _Accessory      = InstanceCreator <AContext, TAccessory> .Create(AndroidContext);

            _AccessoryStack.Add(_Accessory, Extensions.Layout.Wrap, Extensions.Layout.Wrap, GravityFlags.Center);
        }
Esempio n. 7
0
        /// <summary>
        /// Gets the cell.
        /// </summary>
        /// <returns>The cell.</returns>
        /// <param name="item">Item.</param>
        /// <param name="reusableCell">Reusable cell.</param>
        /// <param name="tv">Tv.</param>
        public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
        {
            TnativeCell nativeCell = reusableCell as TnativeCell;

            if (nativeCell == null)
            {
                nativeCell = InstanceCreator <Cell, TnativeCell> .Create(item);
            }
            nativeCell.Cell = item;

            return(nativeCell);
        }
Esempio n. 8
0
 protected override View GetCellCore(Xamarin.Forms.Cell item, View convertView, ViewGroup parent,
                                     Context context)
 {
     if (!(convertView is TNativeCell nativeCell))
     {
         nativeCell = InstanceCreator <Context, Xamarin.Forms.Cell, TNativeCell> .Create(context, item);
     }
     ClearPropertyChanged(nativeCell);
     nativeCell.Cell = item;
     SetUpPropertyChanged(nativeCell);
     nativeCell.UpdateCell();
     return(nativeCell);
 }
Esempio n. 9
0
        /// <summary>
        /// バインド値がDapperAid固有のSQL条件式記述用メソッドで値指定している場合は、
        /// SQL条件式生成メソッドを呼び出してパラメータバインド・SQL組み立てを行います。
        /// </summary>
        /// <param name="parameters">パラメーターオブジェクト</param>
        /// <param name="column">バインド対象のカラム</param>
        /// <param name="expression">バインド値をあらわす式木</param>
        /// <param name="opIsNot">条件式をnotで生成する場合はtrue</param>
        /// <returns>生成されたSQL表現文字列。ただしバインド値がDapperAid固有のSQL条件式記述用メソッドではなかった場合null</returns>
        protected string TryBindSqlExpr(DynamicParameters parameters, TableInfo.Column column, Expression expression, bool opIsNot)
        {
            var methodCallExpression = ExpressionHelper.CastTo <MethodCallExpression>(expression);

            if (methodCallExpression != null && methodCallExpression.Method != null && typeof(ISqlExpr).IsAssignableFrom(methodCallExpression.Method.DeclaringType))
            {
                return(InstanceCreator.Create <ISqlExpr>(methodCallExpression.Method.DeclaringType).BuildSql(
                           methodCallExpression.Method.Name,
                           methodCallExpression.Arguments,
                           this,
                           parameters,
                           column,
                           opIsNot));
            }
            return(null);
        }
Esempio n. 10
0
        public object Create(Type type, BuildContext context, IEnumerable <InjectableMember> injectableMembers = null)
        {
            var instance = inner.Create(type, context, injectableMembers);

            if (instance == null)
            {
                if (typeLocator.TryLocate(type, out instance))
                {
                    return(instance);
                }

                throw new Exception($"Cannot create instance of type {type}");
            }

            return(instance);
        }
Esempio n. 11
0
        public static IEnumerable <IIPv4Getter> Create()
        {
            List <IIPv4Getter> getters = new List <IIPv4Getter>();

            if (Options.Instance.CheckLocalNetworkAdaptor)
            {
                getters.Add(new LocalIPv4Getter());
            }
            else
            {
                getters.AddRange(InstanceCreator.Create <IIPv4Getter>(Ignore.CheckType));
                getters.AddRange(_definedGetters);
            }

            return(getters);
        }
Esempio n. 12
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.StartObject)
            {
                var denormalizedReference = new DenormalizedReference();
                serializer.Populate(reader, denormalizedReference);

                var referenceInstace = _generator.CreateClassProxyWithTarget(
                    denormalizedReference.ReferenceInstanceType,
                    new Type[] { typeof(IDynamicProxy) },
                    InstanceCreator.Create(denormalizedReference.ReferenceInstanceType),
                    new ReferenceInterceptor(denormalizedReference.Id, denormalizedReference.ReferenceInstanceType));

                return(referenceInstace);
            }
            return(null);
        }
Esempio n. 13
0
        /// <summary>
        /// Gets the cell.
        /// </summary>
        /// <returns>The cell.</returns>
        /// <param name="item">Item.</param>
        /// <param name="reusableCell">Reusable cell.</param>
        /// <param name="tv">Tv.</param>
        public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
        {
            TnativeCell nativeCell = reusableCell as TnativeCell;

            if (nativeCell == null)
            {
                nativeCell = InstanceCreator <Cell, TnativeCell> .Create(item);
            }

            ClearPropertyChanged(nativeCell);

            nativeCell.Cell = item;

            SetUpPropertyChanged(nativeCell);

            nativeCell.UpdateCell();

            return(nativeCell);
        }
        /// <summary>
        /// Gets the cell core.
        /// </summary>
        /// <returns>The cell core.</returns>
        /// <param name="item">Item.</param>
        /// <param name="convertView">Convert view.</param>
        /// <param name="parent">Parent.</param>
        /// <param name="context">Context.</param>
        protected override Android.Views.View GetCellCore(Xamarin.Forms.Cell item, Android.Views.View convertView, Android.Views.ViewGroup parent, Android.Content.Context context)
        {
            TnativeCell nativeCell = convertView as TnativeCell;

            if (nativeCell == null)
            {
                nativeCell = InstanceCreator <Context, Xamarin.Forms.Cell, TnativeCell> .Create(context, item);
            }

            ClearPropertyChanged(nativeCell);

            nativeCell.Cell = item;

            SetUpPropertyChanged(nativeCell);

            nativeCell.UpdateCell();

            return(nativeCell);
        }
Esempio n. 15
0
        public object CreateInstance(Type type, params object[] unknownInstances)
        {
            Check.ArgumentIsNull(type, nameof(type));
            Check.ArgumentIsNull(unknownInstances, nameof(unknownInstances));

            if (unknownInstances.GroupBy(i => i.GetType()).Any(g => g.Count() > 1))
            {
                throw new ArgumentException($"{nameof(unknownInstances)} has more than one entry of the same type.", nameof(unknownInstances));
            }

            var unknownTypes = unknownInstances.ToDictionary(i => i.GetType(), i => i);

            lock (SyncRoot)
            {
                var instance = InstanceCreator.Create(this, type, unknownTypes);
                PropertyInjector.Inject(this, instance.Object, unknownTypes);

                return(instance.Object);
            }
        }
Esempio n. 16
0
        protected override Android.Views.View GetCellCore(Xamarin.Forms.Cell item,
                                                          Android.Views.View?convertView,
                                                          Android.Views.ViewGroup parent,
                                                          Context context)
        {
            if (convertView is not TNativeCell nativeCell)
            {
                nativeCell = InstanceCreator.Create <TNativeCell>(context, item);
                // nativeCell = InstanceCreator<Context, Xamarin.Forms.Cell, TnativeCell>.Create(context, item);
            }

            ClearPropertyChanged(nativeCell);

            nativeCell.Cell = item;

            SetUpPropertyChanged(nativeCell);

            nativeCell.UpdateCell();

            return(nativeCell);
        }
Esempio n. 17
0
        /// <summary>
        /// Binds the paged model.
        /// </summary>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="bindingContext">The binding context.</param>
        /// <returns>The bound object.</returns>
        public object BindPagedModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            object pagedModel = InstanceCreator.Create(bindingContext.ModelType);

            string page = controllerContext.RequestContext.HttpContext.Request.QueryString.Get("page");

            if (controllerContext.RequestContext.HttpContext.Request.RequestType != "GET")
            {
                page = controllerContext.RequestContext.HttpContext.Request.Form.Get("page");
            }
            if (!string.IsNullOrEmpty(page))
            {
                int currentPage = 0;
                if (Int32.TryParse(page, out currentPage))
                {
                    PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(pagedModel);
                    properties["CurrentPage"].SetValue(pagedModel, currentPage);
                }
            }

            return(pagedModel);
        }
Esempio n. 18
0
        /// <summary>
        ///     Invokes the specified invocation information.
        /// </summary>
        static InvokeOutput UnsafeInvoke(BOAContext boaContext, Action <string> trace, InvocationInfo invocationInfo, IReadOnlyList <InvocationMethodParameterInfo> parameters)
        {
            var success = Fun((object responseOfInvokeMethod) => new InvokeOutput {
                ExecutionResponseAsJson = SerializeToJsonDoNotIgnoreDefaultValues(responseOfInvokeMethod)
            });

            var findTargetType = Fun(() =>
            {
                trace($"Started to search class: {invocationInfo.ClassName}");

                return(GetTargetType(invocationInfo));
            });

            var targetType = findTargetType();

            var tryToInvokeAsEndOfDay = Fun(() =>
            {
                var methodName = invocationInfo.MethodName;

                if (methodName != EndOfDay.MethodAccessText)
                {
                    return(null);
                }

                boaContext.Authenticate(ChannelContract.EOD);

                var errorMessage = EndOfDayInvoker.Invoke(targetType);
                if (errorMessage == null)
                {
                    return(EODSuccess);
                }

                return(new InvokeOutput(new Exception(errorMessage)));
            });
            var eodOutput = tryToInvokeAsEndOfDay();

            if (eodOutput != null)
            {
                return(eodOutput);
            }

            trace($"Started to search method: {invocationInfo.MethodName}");

            var methodInfo = targetType.GetMethods(AllBindings).FirstOrDefault(m => CecilHelper.IsSignatureMatched(m, invocationInfo.MethodName));

            if (methodInfo == null)
            {
                throw new Exception("Method not found.");
            }

            // TRY BOA Authenticate
            if (IsBoaAuthenticationRequired(invocationInfo.AssemblyName))
            {
                trace("Authentication is started. Because assembly name starts with BOA prefix.");

                // boaContext.Authenticate();
                boaContext.LoadBOAConfigurationFile();
            }

            trace("Preparing invocation parameters");

            var invocationParameters = InvocationParameterPreparer.Prepare(parameters ?? new List <InvocationMethodParameterInfo>(), methodInfo, boaContext, trace);

            trace("Invoke started. Response waiting...");

            var invokeMethod = Fun(() =>
            {
                var tryInvokeStaticMethod = Fun(() =>
                {
                    if (!methodInfo.IsStatic)
                    {
                        return(TryMethodInvokeResponse.NotInvoked);
                    }

                    return(new TryMethodInvokeResponse(InvokeStaticMethod(methodInfo, invocationParameters.ToArray())));
                });

                var tryInvokeAsCardServiceMethod = Fun(() =>
                {
                    var methodName = invocationInfo.MethodName;

                    if (!IsCardServiceAssembly(targetType.Namespace))
                    {
                        return(TryMethodInvokeResponse.NotInvoked);
                    }

                    var cardServiceMethodInvokerInput = new CardServiceMethodInvokerInput(targetType, methodName, invocationParameters);

                    return(new TryMethodInvokeResponse(CardServiceMethodInvoker.Invoke(cardServiceMethodInvokerInput, trace, invocationInfo.Environment)));
                });

                var tryInvokeNonStaticMethod = Fun(() =>
                {
                    if (methodInfo.IsStatic)
                    {
                        return(TryMethodInvokeResponse.NotInvoked);
                    }

                    var instance = InstanceCreator.Create(targetType, boaContext);

                    return(new TryMethodInvokeResponse(InvokeNonStaticMethod(methodInfo, instance, invocationParameters.ToArray())));
                });

                var tryMethodInvokeResponse = tryInvokeStaticMethod();
                if (tryMethodInvokeResponse != TryMethodInvokeResponse.NotInvoked)
                {
                    return(tryMethodInvokeResponse.MethodReturnValue);
                }

                tryMethodInvokeResponse = tryInvokeAsCardServiceMethod();
                if (tryMethodInvokeResponse != TryMethodInvokeResponse.NotInvoked)
                {
                    return(tryMethodInvokeResponse.MethodReturnValue);
                }

                tryMethodInvokeResponse = tryInvokeNonStaticMethod();
                if (tryMethodInvokeResponse != TryMethodInvokeResponse.NotInvoked)
                {
                    return(tryMethodInvokeResponse.MethodReturnValue);
                }

                throw new InvalidOperationException("Unknown invocation type.");
            });

            var stopwatch = Stopwatch.StartNew();

            var responseInvokeMethod = invokeMethod();

            responseInvokeMethod = NormalizeInvokedMethodReturnValue(responseInvokeMethod);

            stopwatch.Stop();

            trace($"Successfully invoked in {stopwatch.Elapsed.Milliseconds} milliseconds.");

            boaContext.Dispose();

            var output = success(responseInvokeMethod);

            var serializeParameter = Fun((object instance) =>
            {
                if (instance == null)
                {
                    return(null);
                }

                return(SerializeToJson(instance));
            });

            output.InvocationParameters = invocationParameters.Select(serializeParameter).ToList();

            return(output);
        }
 /// <summary>
 /// Получения экземпляра обработчика действия
 /// </summary>
 /// <typeparam name="TAction"></typeparam>
 /// <param name="action"></param>
 /// <returns></returns>
 private object CreateHandlerInstance(Type handlerType)
 {
     return(_instanceCreator.Create <ServiceProviderPropertyCreator>(Provider, handlerType));
 }
Esempio n. 20
0
        public static void AddFilter <T>(this IList <MagicOnionServiceFilterDescriptor> filters) where T : MagicOnionFilterAttribute
        {
            var obj = InstanceCreator.Create <T>();

            filters.Add(new MagicOnionServiceFilterDescriptor(obj));
        }
Esempio n. 21
0
 private CompiledQuery CreateAndRunVirtualMachine(string script)
 {
     return(InstanceCreator.Create(script, new DiskSchemaProvider()));
 }
 public static T CreateInstance <T>()
     where T : class
 {
     return(InstanceCreator <T> .Create());
 }
Esempio n. 23
0
 protected IRunnable CreateAndRunVirtualMachine <T>(string script,
                                                    IDictionary <string, IEnumerable <T> > sources)
     where T : BasicEntity
 {
     return(InstanceCreator.Create(script, new SchemaProvider <T>(sources)));
 }