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