public static List <Object> getValuesFromMappedSource(this object source, propertyMap map) { List <Object> output = new List <object>(); Dictionary <String, Object> dictOutput = source.getDictionaryFromMappedSource(map); output.AddRange(dictOutput.Values.ToArray()); return(output); }
/// <summary> /// Postavlja vednosti iz recnika u dati ciljani objekat - da bi bilo kompatibilno niz mora biti u istom rasporedu kao i u property mapu /// </summary> /// <param name="target">Objekat koji prima vednosti</param> /// <param name="values">Recnik vrednosti koje treba da primeni na ciljani objekat.</param> /// <param name="map">Mapa koju treba da koristi za kopiranje vednosti - ako se prosledi primenice podesavanja isActive i kopirace samo one vednosti koje su navedene i u mapi i u prosledjenom recniku</param> /// <returns>Broj propertija koji su postavljeni</returns> public static Int32 setValuesToMappedTarget(this object target, Dictionary <String, Object> values, propertyMap map = null) { Int32 output = 0; if (target == null) { throw new ArgumentNullException("Can't map to null - dude!", nameof(target)); //new aceGeneralException("Mapping>> izvor je null"); //return output; } Type iTI = target.GetType(); String propName = ""; if (map != null) { // prenos pomocu mape foreach (propertyMapEntry pME in map) { propName = pME.targetProperty; if ((pME.isActive && values.ContainsKey(propName))) { var pi = iTI.GetProperty(propName); if (pi != null) { pi.SetValue(target, values[propName], null); //target.imbSetPropertySafe(pi, values[propName]); output++; } } } } else { // prenos direktno foreach (KeyValuePair <String, Object> pME in values) { propName = pME.Key; var pi = iTI.GetProperty(propName); if (pi != null) { //imbPropertyInfo iPI = iTI.allPropertiesByName[propName]; //target.imbSetPropertySafe(pi, pME.Value); pi.SetValue(target, pME.Value, null); output++; } } } return(output); }
/// <summary> /// Vraca recnik sa vrednostima iz objekta. /// </summary> /// <remarks> /// Recnik moze biti indeksiran prema imenima propertija za ciljani objekat ili za izvorni objekat /// </remarks> /// <param name="source">Objekat iz koga se preuzimaju vrednosti</param> /// <param name="map">Mapa iz koje preuzima vrednosti</param> /// <param name="targetNames">Whom property names to use for the dictionary?</param> /// <returns>Recnik sa imenima propertija i vrednostima</returns> public static Dictionary <String, Object> getDictionaryFromMappedSource(this Object source, propertyMap map, propertyMapNameSource targetNames = propertyMapNameSource.useTargetNames) { Dictionary <String, Object> output = new Dictionary <String, Object>(); if (source == null) { throw new ArgumentNullException("Can't map from null - dude!", nameof(source)); //new aceGeneralException("Mapping>> izvor je null"); //return output; } Type iTI = source.GetType(); foreach (propertyMapEntry pME in map) { if (pME.isActive) { var pi = iTI.GetProperty(pME.sourceProperty); if (pi != null) { Object val = pi.GetValue(source, null); //source.imbGetPropertySafe(pi, null); String key = pME.targetProperty; if (targetNames == propertyMapNameSource.useSourceNames) { key = pME.sourceProperty; } output.Add(key, val); } } } return(output); }
/// <summary> /// Primenjuje prosledjenu property mapu /// </summary> /// <param name="target"></param> /// <param name="source"></param> /// <param name="map"></param> /// <returns>Broj propertija koji su postavljeni</returns> public static Int32 setObjectByMappedSource(this object target, object source, propertyMap map) { Dictionary <String, Object> dictOutput = source.getDictionaryFromMappedSource(map); return(target.setValuesToMappedTarget(dictOutput, map)); }