/// <summary>
		/// Adds new factory to the facility.
		/// </summary>
		/// <param name="customConfiguration"></param>
		/// <returns></returns>
		public INHFacilityConfiguration AddFactory(Action<IFactoryConfiguration> customConfiguration)
		{
			var factoryConfig=new FactoryConfiguration();
			customConfiguration(factoryConfig);
			this.factoryConfigurations.Add(factoryConfig);
			return this;
		}
Esempio n. 2
0
 public ViaCEPTimerTriggerFunctionTest()
 {
     _httpClient             = new HttpClient();
     _httpClient.BaseAddress = new Uri("https://viacep.com.br/ws/");
     _logger = FactoryConfiguration.CreateLogger();
 }
 public List <EntityConfiguration> GetAll()
 {
     return(FactoryConfiguration.GetList(base.DataContext.Configuration.OrderByDescending(p => p.ModifyDate).ToList()));
 }
 public List <EntityConfiguration> GetActives()
 {
     return(FactoryConfiguration.GetList(base.DataContext.Configuration.Where(p => p.Status == true).ToList()));
 }
        private MethodInfo MatchMethods(FactoryConfiguration factory, Type type, string methodName, bool isStatic)
        {
            MethodInfo[] methods         = type.GetMethods();
            MethodInfo   bestMethodMatch = null;
            int          bestScore       = int.MaxValue;


            foreach (MethodInfo method in methods)
            {
                if (method.Name != methodName)
                {
                    continue;
                }

                int             score      = 0;
                ParameterInfo[] parameters = method.GetParameters();

                //if param count doesnt match , move to next ctor
                if (parameters.Length != factory.ParameterConfigurations.Count)
                {
                    continue;
                }

                if (parameters.Length == 0)
                {
                    return(method);
                }

                #region Match parameters

                for (int i = 0; i < parameters.Length; i++)
                {
                    ParameterConfiguration parameterConfig = (ParameterConfiguration)factory.ParameterConfigurations[i];
                    Type type1 = parameters[i].ParameterType;
                    Type type2 = parameterConfig.Type;
                    if (type2 == null)
                    {
                        //untyped parameter
                        try
                        {
                            ValueConfiguration parameterValueConfig = (ValueConfiguration)parameterConfig.Value;
                            object             res = Convert.ChangeType(parameterValueConfig.Value, type1);
                        }
                        catch
                        {
                            continue;
                        }
                        score++;
                    }
                    else
                    {
                        //typed parameter

                        if (type1.IsAssignableFrom(type2))
                        {
                            if (type1 == type2)
                            {
                                //same type
                                score++;
                            }
                            else if (type2.IsSubclassOf(type1))
                            {
                                //subclass
                                Type tmpType = type2;
                                while (tmpType != type1)
                                {
                                    score++;
                                    tmpType = tmpType.BaseType;
                                }
                            }
                            else
                            {
                                //interface
                                score++;
                            }
                        }
                        else
                        {
                            //ignore this
                            continue;
                        }
                    }
                }

                #endregion

                if (score < bestScore && score != 0)
                {
                    bestMethodMatch = method;
                    bestScore       = score;
                }
            }
            return(bestMethodMatch);
        }
        public IContainer Configure(XmlElement xmlRoot)
        {
            IContainer container = new Container();

            XmlElement o = xmlRoot;

            if (o == null)
            {
                return(container);
            }

            ArrayList objectConfigurations  = new ArrayList();
            ArrayList listConfigurations    = new ArrayList();
            ArrayList factoryConfigurations = new ArrayList();


            foreach (XmlNode configNode in o)
            {
                if (configNode.Name == "object")
                {
                    IObjectConfiguration objectConfig = ConfigureObject(configNode, container);

                    objectConfigurations.Add(objectConfig);
                }

                if (configNode.Name == "list")
                {
                    IListConfiguration listConfig = ConfigureList(configNode, container);

                    listConfigurations.Add(listConfig);
                }

                if (configNode.Name == "factory")
                {
                    IFactoryConfiguration factoryConfig = ConfigureFactory(configNode, container);

                    factoryConfigurations.Add(factoryConfig);
                }
            }

            foreach (FactoryConfiguration factoryConfig in factoryConfigurations)
            {
                FillFactoryParameterTypes(factoryConfig);
                if (factoryConfig.Object != null)
                {
                    factoryConfig.Type = factoryConfig.Object.Type;
                }

                bool       isStatic        = factoryConfig.Object == null;
                MethodInfo bestMethodMatch = MatchMethods(factoryConfig, factoryConfig.Type, factoryConfig.MethodName, isStatic)
                ;
                if (bestMethodMatch == null)
                {
                    throw new Exception(string.Format("Can not find Method for type '{0}' that matches your parameters", factoryConfig.Type));
                }
                factoryConfig.Method = bestMethodMatch;
            }


            foreach (ObjectConfiguration objectConfig in objectConfigurations)
            {
                FillCtorParameterTypes(objectConfig);

                if (objectConfig.InstanceValue is FactoryConfiguration)
                {
                    FactoryConfiguration factory = objectConfig.InstanceValue as FactoryConfiguration;
                    objectConfig.Type = factory.Method.ReturnType;
                }
                else
                {
                    ConstructorInfo bestCtorMatch = MatchConstructors(objectConfig);
                    if (bestCtorMatch == null)
                    {
                        throw new Exception(string.Format("Can not find CTOR for type '{0}' that matches your parameters", objectConfig.Type));
                    }
                    objectConfig.Constructor = bestCtorMatch;
                }
            }

            foreach (ListConfiguration listConfig in listConfigurations)
            {
                FillItemTypes(listConfig);
            }


            //cache configuration


            return(container);
        }
Esempio n. 7
0
 public static void Boot()
 {
     //Configure the DI Container
     FactoryConfiguration.Configure();
 }
Esempio n. 8
0
 public static void InitFactoryTime(IModelProject project)
 {
     FactoryConfiguration.Check(project, InitializeFacotryTime);
 }
Esempio n. 9
0
 public static void InitFactoryTime(IExperimentResultItem result)
 {
     FactoryConfiguration.Check(result.Model, InitializeFacotryTime);
 }
Esempio n. 10
0
 public static void InitFactoryTime(IModelProject project)
 {
     FactoryConfiguration.Check(project, CreateFactoryTime);
 }