예제 #1
0
파일: MT4Binder.cs 프로젝트: razims/Rox.MT
        protected override object CreateModel(ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            if (_modelCreator == null)
            {
                var modelTypeInfo = bindingContext.ModelType.GetTypeInfo();
                var constructor   = modelTypeInfo.GetConstructor(new[] { typeof(int) });
                var parameter     = Expression.Parameter(typeof(int), "p");

                _modelCreator = Expression
                                .Lambda <Func <int, object> >(Expression.New(constructor, parameter), parameter)
                                .Compile();
            }

            var codePage = bindingContext.CodePage();

            if (codePage == 0)
            {
                var option = bindingContext.HttpContext.RequestServices.GetRequiredService <IOptions <MT4NativeOption> >();
                codePage = option?.Value?.codePage ?? 0;
            }

            return(_modelCreator(codePage));
        }
예제 #2
0
파일: MT4Binder.cs 프로젝트: razims/Rox.MT
        protected virtual object CreateModel(MT4Manager manager, ModelBindingContext bindingContext)
        {
            var codePage = bindingContext.CodePage();

            switch (bindingContext.ModelType.Name)
            {
            case "ConSymbol":
                var value = bindingContext.GetParameterValue("Name");
                return(manager.CfgRequestSymbol(codePage).Where(p => p.Name == value).First());

            default: break;
            }

            return(null);
        }