Esempio n. 1
0
        private TViewModel ResolveViewModel <TViewModel>(object paramsObj = null)
            where TViewModel : IViewModel
        {
            if (paramsObj == null)
            {
                return(_container.Resolve <TViewModel>());
            }

            ParameterSelector resolveParams = null;

            paramsObj
            .GetType()
            .GetRuntimeProperties()
            .ToList()
            .ForEach(parameter =>
            {
                resolveParams = resolveParams == null
                        ? Parameters.Of.Name(parameter.Name, _ => parameter.GetValue(paramsObj, null))
                        : resolveParams.Name(parameter.Name, _ => parameter.GetValue(paramsObj, null));
            });

            return(_container
                   .WithDependencies(resolveParams)
                   .Resolve <TViewModel>());
        }
Esempio n. 2
0
        public static void Intercept(this IRegistrator registrator,
                                     Type serviceType, ParameterSelector interceptorsParameterSelector, object serviceKey = null)
        {
            Type proxyType;

            if (serviceType.IsInterface())
            {
                proxyType = ProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(
                    serviceType, ArrayTools.Empty <Type>(), ProxyGenerationOptions.Default);
            }
            else if (serviceType.IsClass())
            {
                proxyType = ProxyBuilder.CreateClassProxyTypeWithTarget(
                    serviceType, ArrayTools.Empty <Type>(), ProxyGenerationOptions.Default);
            }
            else
            {
                throw new ArgumentException(
                          $"Intercepted service type {serviceType} is not a supported, cause it is nor a class nor an interface");
            }

            registrator.Register(serviceType, proxyType,
                                 made: Made.Of(
                                     pt => pt.PublicConstructors().FindFirst(ctor => ctor.GetParameters().Length != 0),
                                     interceptorsParameterSelector),
                                 setup: Setup.DecoratorOf(useDecorateeReuse: true, decorateeServiceKey: serviceKey));
        }
        public IServiceRegistration Complete <TService, TImplementation>() where TImplementation : TService
        {
            this.container.Register <TService, TImplementation>(serviceKey: this.currentServiceName, made: Made.Of(parameters: this.currentParameterSelector, propertiesAndFields: this.currentPropertiesSelector));

            this.currentServiceName        = null;
            this.currentParameterSelector  = null;
            this.currentPropertiesSelector = null;
            return(this);
        }
Esempio n. 4
0
        public void ProductSelectorSelectParameters()
        {
            ParameterSelector parameterSelector = _productSelector.PartSelector.ParameterSelectors.Single(x => Equals(x.SelectedParameterFlaged.Parameter, _breaker));

            parameterSelector.SelectedParameter = (_drive);

            Assert.IsTrue(_productSelector.SelectedProduct.Part.Parameters.AllMembersAreSame(new[] { _drive }));
            Assert.AreEqual(_productSelector.SelectedProduct.DependentProducts.Count, _productsRelationReducerToDrive.Count);
        }
        private void btnContent_Click(object sender, EventArgs e)
        {
            string content = null;

            ParameterSelector.ShowParameterSelector(_sym.ParameterDefinition.Parameter, ref content);
            if (content != null)
            {
                txtContent.Text = content;
            }
        }
Esempio n. 6
0
        public void ProductBlockSelectorSelectParameter()
        {
            var parameters = new List <Parameter> {
                _transformator, _c0001, _transCurrent
            };
            //находим селектор с типами оборудования
            var parameterSelector = GetParameterSelector(_productBlockSelector, _eqType);

            parameterSelector.SelectedParameterFlaged = parameterSelector.ParametersFlaged.Single(x => x.Parameter.Equals(_transformator));

            Assert.IsTrue(_productBlockSelector.SelectedBlock.Parameters.MembersAreSame(parameters));
            Assert.IsTrue(_productBlockSelector.ParameterSelectors.Select(x => x.SelectedParameterFlaged.Parameter).MembersAreSame(parameters));

            //находим селектор с токами
            ParameterSelector parameterSelector2 = _productBlockSelector.ParameterSelectors.
                                                   Single(x => x.ParametersFlaged.Select(pf => pf.Parameter).All(p => Equals(p.ParameterGroup, _current)));

            //актуальны параметры с током 1 и 5
            Assert.IsTrue(parameterSelector2.ParametersFlaged.Where(x => x.IsActual).Select(x => x.Parameter).MembersAreSame(new[] { _c0001, _c0005 }));
        }
        private ParameterSelector GetParameterSelector(params KeyValuePair <string, object>[] args)
        {
            ParameterSelector parameterSelector = null;

            if (parameterSelector == null)
            {
                parameterSelector = Parameters.Of.Details((par, req) => null);
            }

            foreach (var arg in args)
            {
                string serviceKey = $"{ this.currentServiceName}{arg.Key}";
                this.container.RegisterInstance(arg.Value, serviceKey: serviceKey);

                //if (parameterSelector != null)
                //    parameterSelector.And(Parameters.Of.Name(arg.Key, serviceKey: serviceKey));
                //else
                parameterSelector = Parameters.Of.Name(arg.Key, requiredServiceType: arg.Value.GetType(), serviceKey: serviceKey);
            }
            return(parameterSelector);
        }
Esempio n. 8
0
        public void Init()
        {
            _groupEqType      = new ParameterGroup();
            _parameterBreaker = new Parameter {
                ParameterGroup = _groupEqType
            };
            _parameterTransformator = new Parameter {
                ParameterGroup = _groupEqType
            };

            var voltage = new ParameterGroup();

            _parameterV110 = new Parameter {
                ParameterGroup = voltage
            }.AddRequiredPreviousParameters(new[] { _parameterBreaker });
            _parameterV220 = new Parameter {
                ParameterGroup = voltage
            }.AddRequiredPreviousParameters(new[] { _parameterBreaker });
            _parameterV500 = new Parameter {
                ParameterGroup = voltage
            }.AddRequiredPreviousParameters(new[] { _parameterBreaker });

            var current = new ParameterGroup();

            _c2500 = new Parameter {
                ParameterGroup = current
            }.
            AddRequiredPreviousParameters(new[] { _parameterBreaker, _parameterV110 }).
            AddRequiredPreviousParameters(new[] { _parameterBreaker, _parameterV220 });
            _c3150 = new Parameter {
                ParameterGroup = current
            }.
            AddRequiredPreviousParameters(new[] { _parameterBreaker, _parameterV110 }).
            AddRequiredPreviousParameters(new[] { _parameterBreaker, _parameterV220 }).
            AddRequiredPreviousParameters(new[] { _parameterBreaker, _parameterV500 });

            _parameterSelectorEqType = new ParameterSelector(new [] { _parameterBreaker, _parameterTransformator });
        }
Esempio n. 9
0
        public void ProductSelectorPreSelectedProduct()
        {
            List <Part>     parts            = new List <Part>();
            List <Product>  products         = new List <Product>();
            ProductSelector productSelector1 = new ProductSelector(_groups, parts, products, _requiredDependentEquipmentsParametersList);

            ParameterSelector parameterSelector = productSelector1.PartSelector.ParameterSelectors.Single(x => Equals(x.SelectedParameterFlaged.Parameter, _breaker));

            parameterSelector.SelectedParameter = (_drive);
            Product refProduct = productSelector1.SelectedProduct;

            ProductSelector productSelector2 = new ProductSelector(_groups, parts, products, _requiredDependentEquipmentsParametersList,
                                                                   preSelectedProduct: refProduct);

            //продукты совпадают
            Assert.AreEqual(productSelector2.SelectedProduct, refProduct);
            //параметры главных продуктов совпадают
            Assert.IsTrue(productSelector2.SelectedProduct.Part.Parameters.AllMembersAreSame(productSelector1.SelectedProduct.Part.Parameters));
            //параметры выбранного продукта и выбранные параметры селектора совпадают
            Assert.IsTrue(productSelector2.SelectedProduct.Part.Parameters.AllMembersAreSame(productSelector2.PartSelector.SelectedParameters));

            Assert.IsTrue(GetParts(refProduct).AllMembersAreSame(GetParts(productSelector2.SelectedProduct)));
        }
Esempio n. 10
0
        private static TViewModel ResolveViewModel <TViewModel>(object paramsObj = null)
        {
            if (paramsObj == null)
            {
                return(Ioc.Container.Resolve <TViewModel>());
            }

            ParameterSelector resolveParams = null;

            paramsObj
            .GetType()
            .GetRuntimeProperties()
            .ForEach(x =>
            {
                resolveParams = resolveParams == null
                        ? Parameters.Of.Name(x.Name, n => x.GetValue(paramsObj, null))
                        : resolveParams.Name(x.Name, n => x.GetValue(paramsObj, null));
            });

            return(Ioc.Container
                   .WithDependencies(resolveParams)
                   .Resolve <TViewModel>());
        }
 private void OnRequestBrowse(SymbolField sender) => ParameterSelector.ShowParameterSelector(_sym.ParameterDefinition.Parameter, sender);
 public static ParameterSelector Type(this ParameterSelector source, Type requiredServiceType = null, object serviceKey = null, IfUnresolved ifUnresolved = IfUnresolved.Throw, object defaultValue = null)
 {
     return(source.Details((r, p) => !requiredServiceType.IsAssignableTo(p.ParameterType) ? null
         : ServiceDetails.Of(requiredServiceType, serviceKey, ifUnresolved, defaultValue)));
 }
 public IDipendencyRegistration InjectConstructor(params KeyValuePair <string, object>[] args)
 {
     this.currentParameterSelector = GetParameterSelector(args);
     return(this);
 }