/// <summary> /// normalise energiemenge->energieverbrauch consumption values to a given <paramref name="target"/> value /// </summary> /// <param name="em">Energiemenge</param> /// <param name="target">normalising constant (1.0 by default)</param> /// <returns>new Energiemenge object with normalised consumption values</returns> public static BO4E.BO.Energiemenge Normalise(this BO4E.BO.Energiemenge em, decimal target = 1.0M) { using (MiniProfiler.Current.Step(nameof(Normalise))) { BO4E.BO.Energiemenge result; decimal scalingFactor; Tuple <decimal, Mengeneinheit> totalConsumption; using (MiniProfiler.Current.Step("Calculating total consumption and normalisation factor.")) { totalConsumption = em.GetTotalConsumption(); result = BusinessObjectExtensions.DeepClone <BO4E.BO.Energiemenge>(em); if (totalConsumption.Item1 != 0.0M) { scalingFactor = target / totalConsumption.Item1; } else { scalingFactor = 0.0M; } } using (MiniProfiler.Current.Step("Parallelised normalising of all values.")) { Parallel.ForEach <Verbrauch>(result.Energieverbrauch.Where(v => v.Einheit == totalConsumption.Item2), v => { v.Wert = scalingFactor * v.Wert; }); } return(result); } }
public void TestCloning() { Messlokation bo = new Messlokation() { MesslokationsId = "DE345", }; Messlokation cloneBo = BusinessObjectExtensions.DeepClone <Messlokation>((Messlokation)bo); Assert.AreNotSame(bo, cloneBo); // Assert.AreEqual<Messlokation>((Messlokation)bo, cloneBo); <--- keine ahnung warum das failed. vllt. auch mit json patch/diff arbeiten wie im hubnet projekt }