/// <summary>
 ///   Initializes a new instance of the <see cref="CrossSectionalDataStructureMutableCore" /> class.
 /// </summary>
 public CrossSectionalDataStructureMutableCore()
 {
     this._crossSectionalMeasures = new List<ICrossSectionalMeasureMutableObject>();
     this._crossSectionalAttachDataSet = new List<string>();
     this._crossSectionalAttachGroup = new List<string>();
     this._crossSectionalAttachSection = new List<string>();
     this._crossSectionalAttachObservation = new List<string>();
     this._attributeToMeasureMap = new DictionaryOfLists<string, string>(StringComparer.Ordinal); 
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CrossSectionalDsdHelper"/> class.
 /// </summary>
 /// <param name="dsd">
 /// The DSD.
 /// </param>
 public CrossSectionalDsdHelper(IDataStructureMutableObject dsd)
 {
     this._crossSectional = dsd as ICrossSectionalDataStructureMutableObject;
     if (this._crossSectional != null)
     {
         this._crossDataSet = new HashSet<string>(
             this._crossSectional.CrossSectionalAttachDataSet, StringComparer.Ordinal);
         this._crossGroup = new HashSet<string>(
             this._crossSectional.CrossSectionalAttachGroup, StringComparer.Ordinal);
         this._crossSection = new HashSet<string>(
             this._crossSectional.CrossSectionalAttachSection, StringComparer.Ordinal);
         this._crossObs = new HashSet<string>(
             this._crossSectional.CrossSectionalAttachObservation, StringComparer.Ordinal);
         this._attributeMap = this._crossSectional.AttributeToMeasureMap;
     }
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="CrossSectionalDataStructureMutableCore"/> class.
        /// </summary>
        /// <param name="objTarget">
        /// The obj target. 
        /// </param>
        public CrossSectionalDataStructureMutableCore(ICrossSectionalDataStructureObject objTarget)
            : base(objTarget)
        {
            this._crossSectionalMeasures = new List<ICrossSectionalMeasureMutableObject>();
            this._crossSectionalAttachDataSet = new List<string>();
            this._crossSectionalAttachGroup = new List<string>();
            this._crossSectionalAttachSection = new List<string>();
            this._crossSectionalAttachObservation = new List<string>();
            this._attributeToMeasureMap = new DictionaryOfLists<string, string>(StringComparer.Ordinal);
            PopulateList(this._crossSectionalAttachDataSet, objTarget.GetCrossSectionalAttachDataSet(false));
            PopulateList(this._crossSectionalAttachGroup, objTarget.GetCrossSectionalAttachGroup(false));
            PopulateList(this._crossSectionalAttachObservation, objTarget.GetCrossSectionalAttachObservation());
            PopulateList(this._crossSectionalAttachSection, objTarget.GetCrossSectionalAttachSection(false));

            foreach (IAttributeObject attribute in objTarget.Attributes)
            {
                IList<string> measureIds = new List<string>();

                foreach (ICrossSectionalMeasure xsMeasure in objTarget.GetAttachmentMeasures(attribute))
                {
                    measureIds.Add(xsMeasure.Id);
                }

                this._attributeToMeasureMap.Add(attribute.Id, measureIds);
            }

            foreach (ICrossSectionalMeasure measure in objTarget.CrossSectionalMeasures)
            {
                this._crossSectionalMeasures.Add(new CrossSectionalMeasureMutableCore(measure));
            }

            foreach (var dimension in objTarget.GetDimensions(SdmxStructureEnumType.MeasureDimension))
            {
                var codelistForMeasureDimension = objTarget.GetCodelistForMeasureDimension(dimension.Id);
                if (codelistForMeasureDimension != null)
                {
                    this._measureCodelistMapping[dimension.Id] = codelistForMeasureDimension.CreateMutableInstance();
                }
                
            }
        }