public static object GetMetaFieldValue(MetaField mf, IEnumerable <string> dataCollection) { var data = string.Join("|", dataCollection); if (string.IsNullOrEmpty(data)) { return(null); } object value = null; try { MetaEnumItem item = null; var metaType = mf.GetMetaType(); switch (metaType.McDataType) { case McDataType.Enum: var dicFieldValues = new List <MetaEnumItem>(); var items = data.Split('|'); var metaItems = MetaEnum.GetItems(metaType); foreach (var val in items) { item = metaItems.FirstOrDefault(i => string.Equals(i.Name, val, StringComparison.OrdinalIgnoreCase)); if (item != null) { dicFieldValues.Add(item); } else { if (string.IsNullOrEmpty(val)) { continue; } var newId = MetaEnum.AddItem(metaType, val, 0); if (newId <= 0 || newId > metaItems.Length - 1) { continue; } item = MetaEnum.GetItems(metaType).FirstOrDefault(x => x.Handle == newId); if (item != null) { dicFieldValues.Add(item); } } } if (dicFieldValues.Count > 0) { value = dicFieldValues.ToArray(); } break; default: value = ParseSimpleMetaFieldValue(mf, data); break; } } catch (Exception ex) { throw ex; } return(value); }
private static void InsertMetaEnumItems(XmlNode ownerNode, string groupName, MetaEnumItem[] items) { XmlNode xmlNewRootNode = ownerNode.OwnerDocument.CreateElement(groupName); foreach (MetaEnumItem item in items) { string name = CHelper.GetResFileString(item.Name); InsertDictionaryItem(xmlNewRootNode, name, item.Handle.ToString()); } ownerNode.AppendChild(xmlNewRootNode); }