public Hierarchy <LayoutItem> GetInstanceExtensions(Table table) { if (table.ID.Contains("07")) { } if (ExtDictionary.Count == 0) { return(table.Extensions); } else { if (this.Extensions == null) { var hlroot = new Hierarchy <LayoutItem>(table.Extensions.Item); var ix = 1; foreach (var typedext in ExtDictionary) { var factstring = typedext.Key; var typedfact = new FactBase(); typedfact.SetFromString(factstring); typedfact.SetTyped(); foreach (var ext in table.Extensions.Children) { var li_original = ext.Item; var li_new = LayoutItem.Copy(li_original); foreach (var dim in li_new.Dimensions) { var instancedim = typedfact.Dimensions.FirstOrDefault(i => i.DimensionItem == dim.DimensionItem && i.Domain == dim.Domain); if (instancedim != null) { dim.DomainMember = instancedim.DomainMember; } } var fact = new FactBase(); fact.Dimensions = li_new.Dimensions; fact.Concept = li_new.Concept; fact.SetFactString(); li_new.FactString = fact.FactString; Label extensionlabel = new Label(); var code = String.Format(Table.LabelCodeFormat, typedext.Value); var content = String.Format(Table.ExtensionLableContentFormat, code); extensionlabel.LabelID = code; extensionlabel.Code = code; extensionlabel.Content = content; if (fact.Dimensions.Count == 1) { extensionlabel = table.Taxonomy.GetLabelForDimensionDomainMember(fact.Dimensions.FirstOrDefault()); extensionlabel.Code = code; } if (fact.Dimensions.Count > 1) { extensionlabel.Content = ""; extensionlabel.Code = ""; foreach (var dim in fact.Dimensions) { extensionlabel.Code += dim.DomainMemberFullName + ","; extensionlabel.Content += table.Taxonomy.GetLabelForDimensionDomainMember(dim) + ","; } } li_new.ID = extensionlabel.LabelID; li_new.LabelCode = extensionlabel.Code; li_new.LabelContent = extensionlabel.Content; var hli = new Hierarchy <LayoutItem>(li_new); hlroot.Children.Add(hli); hli.Parent = hlroot; ix++; } } Extensions = hlroot; } return(Extensions); } }