public void Write(
        XElement node,
        string?name,
        IEnumerable <T> item,
        ErrorMaskBuilder?errorMask,
        TranslationCrystal?translationMask,
        XmlSubWriteDelegate <T> transl)
    {
        var elem = new XElement(name !);

        node.Add(elem);
        int i          = 0;
        var subCrystal = translationMask?.GetSubCrystal(0);

        foreach (var listObj in item)
        {
            using (errorMask?.PushIndex(i++))
            {
                try
                {
                    WriteSingleItem(elem, transl, listObj, errorMask, subCrystal);
                }
                catch (Exception ex)
                    when(errorMask != null)
                    {
                        errorMask.ReportException(ex);
                    }
            }
        }
    }
 public void Write(
     XElement node,
     string name,
     IEnumerable <T> item,
     int fieldIndex,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?translationMask,
     XmlSubWriteDelegate <T> transl)
 {
     using (errorMask?.PushIndex(fieldIndex))
     {
         try
         {
             Write(
                 node: node,
                 name: name,
                 item: item,
                 errorMask: errorMask,
                 translationMask: translationMask,
                 transl: transl);
         }
         catch (Exception ex)
             when(errorMask != null)
             {
                 errorMask.ReportException(ex);
             }
     }
 }
Beispiel #3
0
 public void Write <Mask>(
     XElement node,
     string name,
     IEnumerable <KeyValuePair <K, V> > items,
     int fieldIndex,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal translationMask,
     XmlSubWriteDelegate <K> keyTransl,
     XmlSubWriteDelegate <V> valTransl)
     where Mask : IErrorMask
 {
     using (errorMask?.PushIndex(fieldIndex))
     {
         try
         {
             Write(
                 node: node,
                 name: name,
                 items: items,
                 errorMask: errorMask,
                 translationMask: translationMask,
                 keyTransl: keyTransl,
                 valTransl: valTransl);
         }
         catch (Exception ex)
             when(errorMask != null)
             {
                 errorMask.ReportException(ex);
             }
     }
 }
Beispiel #4
0
    public void WriteSingleItem(
        XElement node,
        KeyValuePair <K, V> item,
        ErrorMaskBuilder?errorMask,
        TranslationCrystal?translationMaskKey,
        TranslationCrystal?translationMaskVal,
        XmlSubWriteDelegate <K> keyTransl,
        XmlSubWriteDelegate <V> valTransl)
    {
        var itemElem = new XElement("Item");

        node.Add(itemElem);
        var keyElem = new XElement("Key");

        itemElem.Add(keyElem);
        keyTransl(
            keyElem,
            item.Key,
            errorMask: errorMask,
            translationMask: translationMaskKey);
        var valElem = new XElement("Value");

        itemElem.Add(valElem);
        valTransl(
            valElem,
            item.Value,
            errorMask: errorMask,
            translationMask: translationMaskVal);
    }
Beispiel #5
0
 public override void WriteSingleItem(
     XElement node,
     XmlSubWriteDelegate <T> transl,
     T item,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?translMask)
 {
     transl(
         node,
         item,
         errorMask,
         translMask);
 }
Beispiel #6
0
    public void Write(
        XElement node,
        string?name,
        IEnumerable <KeyValuePair <K, V> > items,
        ErrorMaskBuilder?errorMask,
        TranslationCrystal?translationMask,
        XmlSubWriteDelegate <K> keyTransl,
        XmlSubWriteDelegate <V> valTransl,
        int?fieldIndex = null)
    {
        var elem = new XElement(name !);

        node.Add(elem);
        int i             = 0;
        var keyTranslMask = translationMask?.GetSubCrystal(0);
        var valTranslMask = translationMask?.GetSubCrystal(1);

        foreach (var item in items)
        {
            using (errorMask?.PushIndex(i++))
            {
                try
                {
                    WriteSingleItem(
                        node: elem,
                        item: item,
                        errorMask: errorMask,
                        translationMaskKey: keyTranslMask,
                        translationMaskVal: valTranslMask,
                        keyTransl: keyTransl,
                        valTransl: valTransl);
                }
                catch (Exception ex)
                    when(errorMask != null)
                    {
                        errorMask.ReportException(ex);
                    }
            }
        }
    }
 public abstract void WriteSingleItem(
     XElement node,
     XmlSubWriteDelegate <T> transl,
     T item,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?translationMask);