private static void LoadUnitChargeActive(GXXmlReader reader, string name, GXUnitCharge charge)
 {
     if (reader.IsStartElement(name, true))
     {
         charge.ChargePerUnitScaling.CommodityScale = (sbyte)reader.ReadElementContentAsInt("Scale");
         charge.ChargePerUnitScaling.PriceScale     = (sbyte)reader.ReadElementContentAsInt("PriceScale");
         ObjectType ot = (ObjectType)reader.ReadElementContentAsInt("Type");
         string     ln = reader.ReadElementContentAsString("Ln");
         charge.Commodity.Target = reader.Objects.FindByLN(ot, ln);
         charge.Commodity.Index  = reader.ReadElementContentAsInt("Index");
         List <GXChargeTable> list = new List <GXChargeTable>();
         if (reader.IsStartElement("ChargeTables", true))
         {
             while (reader.IsStartElement("Item", true))
             {
                 GXChargeTable it = new GXChargeTable();
                 it.Index         = reader.ReadElementContentAsString("Index");
                 it.ChargePerUnit = (short)reader.ReadElementContentAsInt("ChargePerUnit");
                 list.Add(it);
             }
             reader.ReadEndElement("ChargeTables");
         }
         reader.ReadEndElement(name);
         charge.ChargeTables = list.ToArray();
     }
 }
예제 #2
0
        private void SetUnitCharge(GXUnitCharge charge, object value)
        {
            List <object> tmp  = (List <object>)value;
            List <object> tmp2 = (List <object>)tmp[0];

            charge.ChargePerUnitScaling.CommodityScale = (sbyte)tmp2[0];
            charge.ChargePerUnitScaling.PriceScale     = (sbyte)tmp2[1];
            tmp2 = (List <object>)tmp[1];
            ObjectType ot = (ObjectType)Convert.ToInt32(tmp2[0]);
            string     ln = GXCommon.ToLogicalName(tmp2[1]);

            charge.Commodity.Target = Parent.FindByLN(ot, ln);
            charge.Commodity.Index  = (sbyte)tmp2[2];
            List <GXChargeTable> list = new List <GXChargeTable>();

            tmp2 = (List <object>)tmp[2];
            foreach (List <object> it in tmp2)
            {
                GXChargeTable item = new GXChargeTable();
                item.Index         = ASCIIEncoding.ASCII.GetString((byte[])it[0]);
                item.ChargePerUnit = (Int16)it[1];
                list.Add(item);
            }
            charge.ChargeTables = list.ToArray();
        }
 private void SetUnitCharge(GXUnitCharge charge, object value)
 {
     if (value != null)
     {
         List <object> tmp, tmp2, it;
         if (value is List <object> )
         {
             tmp = (List <object>)value;
         }
         else
         {
             tmp = new List <object>((object[])value);
         }
         if (tmp[0] is List <object> )
         {
             tmp2 = (List <object>)tmp[0];
         }
         else
         {
             tmp2 = new List <object>((object[])tmp[0]);
         }
         charge.ChargePerUnitScaling.CommodityScale = (sbyte)tmp2[0];
         charge.ChargePerUnitScaling.PriceScale     = (sbyte)tmp2[1];
         if (tmp[1] is List <object> )
         {
             tmp2 = (List <object>)tmp[1];
         }
         else
         {
             tmp2 = new List <object>((object[])tmp[1]);
         }
         ObjectType ot = (ObjectType)Convert.ToInt32(tmp2[0]);
         string     ln = GXCommon.ToLogicalName(tmp2[1]);
         if (ot != ObjectType.None)
         {
             if (Parent != null)
             {
                 charge.Commodity.Target = Parent.FindByLN(ot, ln);
             }
             else
             {
                 charge.Commodity.Target             = GXDLMSClient.CreateObject(ot);
                 charge.Commodity.Target.LogicalName = ln;
             }
         }
         else
         {
             charge.Commodity.Target = null;
         }
         charge.Commodity.Index = (sbyte)tmp2[2];
         List <GXChargeTable> list = new List <GXChargeTable>();
         foreach (object tmp3 in (IEnumerable <object>)tmp[2])
         {
             if (tmp3 is List <object> )
             {
                 it = (List <object>)tmp3;
             }
             else
             {
                 it = new List <object>((object[])tmp3);
             }
             GXChargeTable item = new GXChargeTable();
             item.Index         = ASCIIEncoding.ASCII.GetString((byte[])it[0]);
             item.ChargePerUnit = (Int16)it[1];
             list.Add(item);
         }
         charge.ChargeTables = list.ToArray();
     }
     else
     {
         charge.ChargePerUnitScaling.CommodityScale = 0;
         charge.ChargePerUnitScaling.PriceScale     = 0;
         charge.Commodity.Target = null;
         charge.Commodity.Index  = 0;
         charge.ChargeTables     = new GXChargeTable[0];
     }
 }