private void Load(NETreeComposeType conposeType) { NEData neData = null; if (m_cRoot != null) { foreach (var item in NEConfig.arrTreeComposeData) { if (item.rootType == m_cRoot.node.GetType()) { if (item == conposeType) { neData = GetCurrentTreeNEData(); } break; } } m_cRoot = null; } NEUtil.LoadTreeComposeTypes(conposeType, out m_lstNodeType, out m_lstNodeDataType); //移除根节点 List <Type> lst = new List <Type>(); for (int i = 0; i < m_lstNodeType.Count; i++) { if (!IsRootType(m_lstNodeType[i])) { lst.Add(m_lstNodeType[i]); } } if (m_cCanvas != null) { m_cCanvas.Dispose(); } m_cCanvas = new NECanvas(lst, CreateNENodeByNENodeType); CreateTreeByTreeData(neData); }
public static void LoadTreeComposeTypes(NETreeComposeType composeType, out List <Type> lstNodeType, out List <Type> lstNodeDataType) { lstNodeType = new List <Type>(); lstNodeDataType = new List <Type>(); for (int i = 0; i < composeType.lstNodeAttribute.Count; i++) { var assembly = composeType.lstNodeAttribute[i].Assembly; var lstTypes = assembly.GetTypes(); for (int j = 0; j < lstTypes.Length; j++) { var arr = lstTypes[j].GetCustomAttributes(composeType.lstNodeAttribute[i], true); if (arr.Length > 0) { if (!lstNodeType.Contains(lstTypes[j])) { lstNodeType.Add(lstTypes[j]); var attr = arr[0] as NENodeAttribute; lstNodeDataType.Add(attr.nodeDataType); } } } } }