public static ExtensionData GetCurrentExtensionData(ExtensionType type) { ExtensionData extension = null; foreach (var e in PluginGruop.Singleton.ExtensionDatas) { if (e.Type == type) { extension = e; } } return(extension); }
public static T LinkGroupExistValue <T>(ExtensionData extensionData, Func <ExtensionChildData, bool> funcWhere) where T : ExtensionChildData { T result = null; var existNodes = extensionData.ExtensionNodes.Where(funcWhere); if (existNodes.Count() > 0) { foreach (var data in existNodes) { result = data as T; break; } } return(result); }
public void Setup(XmlReader reader, ref ExtensionData extension) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.EndElement && reader.LocalName.Equals("Extension")) { break; } if (reader.NodeType == XmlNodeType.Element && reader.IsStartElement() && reader.LocalName.Equals("LinkGroup")) { var existValue = ExtensionCheck.LinkGroupExistValue <LinkGroupData> ( extension, node => { var n = node as LinkGroupData; if (n != null) { var name = reader.GetAttribute("Name"); var groupKey = reader.GetAttribute("GroupKey") ?? string.Empty; return(n.Name.Equals(name) && n.GroupKey.Equals(groupKey)); } return(false); } ); XmlLink link = new XmlLink(); if (existValue == null) { LinkGroupData linkGroup = new LinkGroupData(); linkGroup.Index = Convert.ToInt32(reader.GetAttribute("Index")); linkGroup.Name = reader.GetAttribute("Name"); linkGroup.DisplayName = reader.GetAttribute("DisplayName"); linkGroup.IsTitleLink = Convert.ToBoolean(reader.GetAttribute("IsTitleLink")); linkGroup.GroupKey = reader.GetAttribute("GroupKey") ?? string.Empty; linkGroup.Assembly = extension.Assembly; extension.ExtensionNodes.Add(linkGroup); link.Setup(reader, ref linkGroup); } else { link.Setup(reader, ref existValue); } extension.ExtensionNodes.Sort((a, b) => a.Index.CompareTo(b.Index)); } } }
public void Setup(XmlReader reader) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.IsStartElement() && reader.LocalName.Equals("Extension")) { var type = ExtensionTypeManager.GetExtensionType(reader.GetAttribute("Type")); var assembly = reader.GetAttribute("Assembly"); if (type == ExtensionType.LinkGroup) { ExtensionData extension = ExtensionData.GetCurrentExtensionData(type); extension.Assembly = assembly; XmlLinkGroup linkGroup = new XmlLinkGroup(); linkGroup.Setup(reader, ref extension); extension.Assembly = string.Empty; } } } }