private ObservableCollection <EmoEmotion> ProcessEmotions(EmotionScores scores, EmoFace emoface) { var emotionList = new ObservableCollection <EmoEmotion>(); var properties = scores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); //var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); var filterProperties = from p in properties where p.PropertyType == typeof(float) select p; var emoType = EmoEmotionEnum.Undetermined; foreach (var prop in filterProperties) { if (!Enum.TryParse <EmoEmotionEnum>(prop.Name, out emoType)) { emoType = EmoEmotionEnum.Undetermined; } var emoEmotion = new EmoEmotion(); emoEmotion.Score = (float)prop.GetValue(scores); emoEmotion.EmotionType = emoType; emoEmotion.Face = emoface; emotionList.Add(emoEmotion); } return(emotionList); }
private ObservableCollection <EmoEmotion> ProcessEmotions(EmotionScores scores, EmoFace vFace) { ObservableCollection <EmoEmotion> lEmotion = new ObservableCollection <EmoEmotion>(); var vProperties = scores.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); var vFilterProperties = vProperties.Where(x => x.PropertyType == typeof(float)); var vEmoType = EmoEmotionEnum.Undertermined; foreach (var prop in vFilterProperties) { if (!Enum.TryParse <EmoEmotionEnum>(prop.Name, out vEmoType)) { vEmoType = EmoEmotionEnum.Undertermined; } var vEmotion = new EmoEmotion(); vEmotion.Score = (float)prop.GetValue(scores); vEmotion.EmotionType = vEmoType; //vEmotion.EmoFaceId = vFace.Id; vEmotion.Face = vFace; lEmotion.Add(vEmotion); } return(lEmotion); }
private ObservableCollection <EmoEmotion> ProcessEmotions(EmotionScores scores, EmoFace emoface) { //C# es un lenguaje capaz de autodescribirse, es capaz de describir cada uno de los objetos que tiene, sabe como estan construidos cada uno de esos objetos(REFLECTION). var emotionList = new ObservableCollection <EmoEmotion>(); var properties = scores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); //devuelve toda la informacion del tipo de datos que tiene esta variable var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); //En toda Coleccion se puede meter Linq. | Quiero todas las propiedades de tipo float. //from p in properties where p.PropertyType == typeof(float) select p; var emotype = EmoEmotionEnum.Undetermined; //variable auxiliar foreach (var prop in filterProperties) { if (!Enum.TryParse <EmoEmotionEnum>(prop.Name, out emotype)) { emotype = EmoEmotionEnum.Undetermined; } var emoEmotion = new EmoEmotion(); emoEmotion.Score = (float)prop.GetValue(scores); emoEmotion.EmotionType = emotype; emoEmotion.Face = emoface; emotionList.Add(emoEmotion); } return(emotionList); }
private ObservableCollection <Models.Emotion> ProccesEmotions(EmotionScores emotionScores, Face face) { var emotionList = new ObservableCollection <Models.Emotion>(); var properties = emotionScores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); var emotionType = EmotionEnum.Undeterminated; foreach (var prop in filterProperties) { if (!Enum.TryParse <EmotionEnum>(prop.Name, out emotionType)) { emotionType = EmotionEnum.Undeterminated; } var emotion = new Models.Emotion { Score = (float)prop.GetValue(emotionScores), EmotionType = emotionType, Face = face }; emotionList.Add(emotion); } return(emotionList); }
public static Tuple <string, float> MainEmotion(this EmotionScores s, bool UseNeutral = false) { float m = 0; string e = ""; foreach (var p in s.GetType().GetProperties()) { if (!UseNeutral && p.Name == "Neutral") { continue; } if ((float)p.GetValue(s) > m) { m = (float)p.GetValue(s); e = p.Name; } } return(new Tuple <string, float>(e, m)); }
// Se crea el metodo para private ObservableCollection <EmoEmotion> ProcessEmotions(EmotionScores scores, EmoFace emoface) { // Se instancia una variable lista de EmoEmotion para Almacenar los valores a las emociones var emotionList = new ObservableCollection <EmoEmotion>(); // con GetType se muestro toda la informacion que tiene scores,Con GetProperties Me devuelve todas // las propiedades de scores y en los parametros de Getproperties para que no me devuelva todas las // las propiedades le especifico cuales quiero traer. El | es un or binario ya que estamos haciendo // intercambio con una enumeracion. El Instance es para que no me devuelva los campos estaticos var properties = scores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); // Se filtran los valores recividos que sean de tipo float de properties var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); // Se Crea una variable para los valores que no estan definidos para que se almacenen en el var emotype = EmoEmotionEnum.Undetermined; // Se recorre filterProperties para irle agregando los valores de puntuacion foreach (var prop in filterProperties) { // Se convierte los parametros de la Emumeracion EmoEmotionEnum EN un valor equivalente // a un Enumerable y si no los convierte el valor recivido se convierte en if (!Enum.TryParse <EmoEmotionEnum>(prop.Name, out emotype)) { emotype = EmoEmotionEnum.Undetermined; } // Se instancia EmoEmotion var emoEmotion = new EmoEmotion(); // Se le agregan los valores a los atributos de EmoEmotion emoEmotion.Score = (float)prop.GetValue(scores); // Se le almacena un valor Indeterminado a emoEmotion.EmotionType emoEmotion.EmotionType = emotype; // Se le almacenan las propiedades definidas en el metodo anterior emoEmotion.Face = emoface; // Se va llenando la lista con los valores almacenados emotionList.Add(emoEmotion); } // Se returno la Lista que se lleno return(emotionList); }
/* * La funcion extraera cada emocion de la variable scores para transformarla en un * array de EmoEmotion * scores: es la respuesta con cada valor de emociones en una sola variable * */ private ObservableCollection <EmoEmotion> ProcessEmotions(EmotionScores scores, EmoFace emoFace) { // se usara reflection var emotionList = new ObservableCollection <EmoEmotion>(); // Obtengo los campos del objeto // BindingFlags.Public: para obtener solo las propiedades publicas // BindingFlags.Instance: Para que no me devuelva los campos estaticos var properties = scores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); // como properties es collection, puedo usar linq //var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); var filterProperties = from p in properties where p.PropertyType == typeof(float) select p; // variable que se usara para tener el tipo de emotion var emotype = EmoEmotionEnum.Undetermined; foreach (var prop in filterProperties) { // trato de determinar el valor de la enumeracion if (!Enum.TryParse <EmoEmotionEnum>(prop.Name, out emotype)) { emotype = EmoEmotionEnum.Undetermined; } var emoEmotion = new EmoEmotion(); // obtengo el valor de la emotion emoEmotion.Score = (float)prop.GetValue(scores); emoEmotion.EmotionType = emotype; emoEmotion.Face = emoFace; emotionList.Add(emoEmotion); } return(emotionList); }
private ObservableCollection <EmoEmotion> ProcessEmotions(EmotionScores scores, EmoFace emoface) { //Creamos una lista observable de emociones var emotionList = new ObservableCollection <EmoEmotion>(); //Devuelve el tipo y las propiedades publicas y que son parte de una instancia var properties = scores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); //Las propiedades son generias, las filtramos por el tipo Float que es el tipo //de dato que necesitamos de Scores var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); //Incia la iteracion var emotype = EmoEmotionEnum.Undetermined; foreach (var prop in filterProperties) { //este metodo recibe dos parametros, 1 un string de valor, y otro un valor de salida del Enum if (!Enum.TryParse <EmoEmotionEnum>(prop.Name, out emotype)) { emotype = EmoEmotionEnum.Undetermined; } //Instancia del EmoEmotion var emoEmotion = new EmoEmotion(); //Agregamos el valor que se itera de las filtraciones emoEmotion.Score = (float)prop.GetValue(scores); emoEmotion.EmotionType = emotype; emoEmotion.Face = emoface; //Lo agregamos emotionList.Add(emoEmotion); } //Retornamos la lista return(emotionList); }
public static EmotionScores AvEmotions(this IEnumerable <EmotionScores> S) { if (S.Count() == 0) { return(null); } if (S.Count() == 1) { return(S.First()); } var E = new EmotionScores(); foreach (var x in E.GetType().GetProperties()) { float f = 0; int c = 0; foreach (var z in S) { c++; f += (float)x.GetValue(z); } x.SetValue(E, f / c); } return(E); }
private ObservableCollection <EmoEmotion> ProcessEmotion(EmotionScores scores, EmoFace emoFace) { var emotionList = new ObservableCollection <EmoEmotion>(); // Reflection // permite aaceder a los metodos propios de los componentes en tiempo de ejecucion // (que sean publicos o propios de la instancia) // traer todas las propiedades var properties = scores.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); // linq para hacer query en una lista y filtrar tofas las propiedades float // var filterProperties = from p in properties where p.PropertyType == typeof(float) select p; var filterProperties = properties.Where(p => p.PropertyType == typeof(float)); var emoType = EmoEmotionEnum.Undertermined; foreach (var prop in filterProperties) { // asignar el valor en un enum // convierte el parametro en una opcion del enumerador ENUM -> retorna booleano Enum.TryParse <EmoEmotionEnum>(prop.Name, out emoType); var emoEmotion = new EmoEmotion() { Score = (float)prop.GetValue(scores), EmotionType = emoType, Face = emoFace }; emotionList.Add(emoEmotion); } return(emotionList); }