Exemple #1
0
 /// <summary>
 /// normalise energiemenge-&gt;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
        }