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); }
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); } }
public static IEnumerable <IIPv6Getter> Create() { List <IIPv6Getter> getters = new List <IIPv6Getter>(); getters.AddRange(InstanceCreator.Create <IIPv6Getter>(Ignore.CheckType)); getters.AddRange(_definedGetters); return(getters); }
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); } } }
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); }
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); }
/// <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); }
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); }
/// <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); }
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); }
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); }
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); }
/// <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); }
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); } }
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); }
/// <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); }
/// <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)); }
public static void AddFilter <T>(this IList <MagicOnionServiceFilterDescriptor> filters) where T : MagicOnionFilterAttribute { var obj = InstanceCreator.Create <T>(); filters.Add(new MagicOnionServiceFilterDescriptor(obj)); }
private CompiledQuery CreateAndRunVirtualMachine(string script) { return(InstanceCreator.Create(script, new DiskSchemaProvider())); }
public static T CreateInstance <T>() where T : class { return(InstanceCreator <T> .Create()); }
protected IRunnable CreateAndRunVirtualMachine <T>(string script, IDictionary <string, IEnumerable <T> > sources) where T : BasicEntity { return(InstanceCreator.Create(script, new SchemaProvider <T>(sources))); }