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>()); }
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); }
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; } }
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); }
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 }); }
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))); }
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); }