Esempio n. 1
0
        public List <DataStructures.Property> GetProperties(string fullname)
        {
            Type t = assembly.GetType(fullname);

            List <DataStructures.Property> temp = new List <DataStructures.Property>();

            PropertyInfo[] p = t.GetProperties();
            foreach (PropertyInfo item in p)
            {
                DataStructures.Property p1 = new DataStructures.Property()
                {
                    ClassName = t.Name, Name = item.Name
                };
                foreach (var att in item.GetCustomAttributes(true))
                {
                    if (att.GetType() == typeof(In))
                    {
                        //p1.ParameterConverterType = ((In)att).ParameterConverterType;
                        //p1.Converter = GetConverter(((In)att).ParameterConverterType.FullName);
                        p1.Converter = ((In)att).Converter;
                        break;
                    }
                }
                temp.Add(p1);
            }
            return(temp);
        }
Esempio n. 2
0
        public List <DataStructures.Property> GetInProperties(string fullname)
        {
            Type t = assembly.GetType(fullname);

            List <DataStructures.Property> temp = new List <DataStructures.Property>();

            PropertyInfo[] p = t.GetProperties();
            foreach (PropertyInfo item in p)
            {
                foreach (var att in item.GetCustomAttributes(true))
                {
                    if (att.GetType() == typeof(In))
                    {
                        In _in = ((In)att);

                        DataStructures.Property p1 = new DataStructures.Property()
                        {
                            ClassName = t.Name, Name = item.Name
                        };
                        //p1.ParameterConverterType = _in.ParameterConverterType;
                        //p1.Converter = GetConverter(_in.ParameterConverterType.FullName);
                        p1.Converter           = _in.Converter;
                        p1.IsMultipleSelection = _in.IsMultipleSelection;
                        p1.Value_Converters    = _in.Value_Converters;

                        temp.Add(p1);
                        break;
                    }
                }
            }
            return(temp);
        }
Esempio n. 3
0
        /// <summary>
        /// Este metodo lo que hace es ponerle cierto valor a una propiedad determinada del objecto T _generic
        /// </summary>
        /// <typeparam name="T">Posibles tipos: Measure, ConsensusFunction, ClusterAlgorithm</typeparam>
        /// <param name="fullname"></param>
        /// <param name="_generic"></param>
        /// <param name="p"></param>
        /// <returns></returns>
        public T SetProperty <T>(string fullname, T _generic, DataStructures.Property p)
        {
            Type t = assembly.GetType(fullname);

            PropertyInfo pi = t.GetProperty(p.Name);

            pi.SetValue(_generic, p.Value, null);

            return(_generic);
        }
Esempio n. 4
0
        public List <DataStructures.Property> GetOutProperties(string fullname)
        {
            Type t = assembly.GetType(fullname);

            List <DataStructures.Property> temp = new List <DataStructures.Property>();

            PropertyInfo[] p = t.GetProperties();
            foreach (PropertyInfo item in p)
            {
                foreach (var att in item.GetCustomAttributes(true))
                {
                    if (att.GetType() == typeof(Out))
                    {
                        DataStructures.Property p1 = new DataStructures.Property()
                        {
                            ClassName = t.Name, Name = item.Name
                        };
                        temp.Add(p1);
                        break;
                    }
                }
            }
            return(temp);
        }
Esempio n. 5
0
        Tree GetTree(string fullname, string name)
        {
            List <Type> final = new List <Type>();

            switch (name)
            {
            case "ClusterAlgorithm":
                foreach (Type t in clustering)
                {
                    final.Add(t);
                }
                break;

            case "ConsensusFunction":
                foreach (Type t in ensemble)
                {
                    final.Add(t);
                }
                break;

            case "Measure":
                foreach (Type t in measure)
                {
                    final.Add(t);
                }
                break;

            default:
                return(null);
            }

            ClassFields c = new ClassFields()
            {
                FullName = fullname, Name = name, IsAbstract = true
            };
            Tree         root  = new Tree(c);
            Queue <Tree> queue = new Queue <Tree>();

            queue.Enqueue(root);

            while (queue.Count > 0)
            {
                Tree top = queue.Dequeue();

                Type type = assembly.GetType(top.Value.FullName);

                List <DataStructures.Property> _properties    = new List <DataStructures.Property>();
                List <DataStructures.Property> _propertiesIN  = new List <DataStructures.Property>();
                List <DataStructures.Property> _propertiesOUT = new List <DataStructures.Property>();
                PropertyInfo[] p = type.GetProperties();
                foreach (PropertyInfo item in p)
                {
                    DataStructures.Property p1 = new DataStructures.Property()
                    {
                        ClassName = top.Value.Name, Name = item.Name
                    };

                    foreach (var item1 in item.GetCustomAttributes(true))
                    {
                        In  _attIN  = item1 as In;
                        Out _attOUT = item1 as Out;
                        if (_attIN != null)
                        {
                            //p1.ParameterConverterType = _attIN.ParameterConverterType;
                            //p1.Converter = GetConverter(_attIN.ParameterConverterType.FullName);
                            p1.Converter           = _attIN.Converter;
                            p1.IsMultipleSelection = _attIN.IsMultipleSelection;
                            p1.Value_Converters    = _attIN.Value_Converters;


                            _propertiesIN.Add(p1);

                            break;
                        }
                        else if (_attOUT != null)
                        {
                            _propertiesOUT.Add(p1);

                            break;
                        }
                    }

                    _properties.Add(p1);
                }
                top.Value.Properties    = _properties;
                top.Value.InProperties  = _propertiesIN;
                top.Value.OutProperties = _propertiesOUT;

                List <Tree> lnc = new List <Tree>();

                List <int> indexs = new List <int>();
                for (int i = 0; i < final.Count; i++)
                {
                    if (final[i].BaseType == type)
                    {
                        Tree ncf = new Tree(new ClassFields());

                        if (!final[i].IsAbstract)
                        {
                            IName instance = GetInstance <IName>(final[i].FullName);
                            ncf.Value.Name = instance.Name;
                        }
                        else
                        {
                            ncf.Value.Name = final[i].Name;
                        }

                        ncf.Value.FullName   = final[i].FullName;
                        ncf.Value.IsAbstract = final[i].IsAbstract ? true : false;

                        lnc.Add(ncf);
                        indexs.Add(i);

                        queue.Enqueue(ncf);
                    }
                }
                top.Childs = lnc;

                for (int i = indexs.Count - 1; i >= 0; i--)
                {
                    final.RemoveAt(indexs[i]);
                }
            }

            return(root);
        }